在oracle中开发java 存储过程早已不是新鲜的事情了。最近因要在oracle10g中开发java存储过程,通过java存储过程调用webservice。在此过程中要用到axis的包,将这些包导入oracle过程中碰到了大量的问题,现在总结一下,希望对同仁有些帮助。
一、安装JSSE
为了运用axis,不但是只需要axis的包,同时还需要jsse的包。到sun去下载jsse1.0.3_04极其samples,步骤如下:
1. Download JSSE version 1.0.3 from the Sun Web site http://java.sun.com/products/jsse/index-103.html. Save and unzip the file on your local disk, D:\jsse1.0.3_01/lib. Locate the three JSSE JAR files, jnet.jar, jcert.jar, and jsse.jar, under the directory
2. Copy the certificates to the database security folder.
Copy the file jsse1.0.3_01/samples/samplecacerts to $ORACLE_HOME/javavm/lib/security/cacerts
3. Copy the JSSE JAR files, jnet.jar, jcert.jar, and jsse.jar to $ORACLE_HOME/javavm/lib.($ORACLE_HOME在我的windows下的路径是D:\oracle\Ora_as10.1.2\)
4.创建一个schema:UTA,同时授权(作为测试用,你也可以创建其他 的名字)
GRANT connect, resource, unlimited tablespace, create public synonym, drop public synonym, javasyspriv TO UTA IDENTIFIED BY JSSE;
5.grant permission。以sysdba的身份登录oralce,执行如下命令
set serveroutput on
call dbms_java.set_output(50000);
CALL dbms_java.grant_permission( 'UTA', 'SYS:java.security.SecurityPermission', 'insertProvider.SunJSSE', '' );
CALL dbms_java.grant_permission( 'UTA', 'SYS:java.security.SecurityPermission', 'putProviderProperty.SunJSSE', '' );
CALL dbms_java.grant_permission( 'UTA', 'SYS:java.security.SecurityPermission', 'getProperty.ssl.ServerSocketFactory.provider', '' );
call dbms_java.grant_permission( 'UTA', 'SYS:java.security.SecurityPermission', '*', '' );
CALL dbms_java.grant_permission( 'UTA', 'SYS:java.util.PropertyPermission', '*', 'write' );
call dbms_java.grant_permission( 'UTA', 'SYS:java.util.logging.LoggingPermission', 'control','' );
call dbms_java.grant_permission('UTA','oracle.aurora.security.JServerPermission','*','*');
call dbms_java.grant_permission( 'UTA', 'SYS:java.lang.RuntimePermission', 'accessDeclaredMembers', '' )
call dbms_java.grant_permission( 'UTA', 'SYS:java.lang.RuntimePermission', '*', '' )
call dbms_java.grant_permission('UTA','oracle.aurora.rdbms.security.PolicyTablePermission','*','*');
call Dbms_Java.Grant_Permission('VIO','java.io.FilePermission', '*','read ');
其中最后四条语句单独执行。如果全部一起执行出错的话
6. From SQL*PLUS, load the JSSE JAR files to the JSSE schema, using DBMS_JAVA.LOADJAVA (assuming that your JAR files are on the $ORACLE_HOME/javavm/lib directory).
SQL> CONNECT UTA/jsse
SQL> SET serveroutput on
SQL> CALL dbms_java.set_output(100000);
SQL> call dbms_java.loadjava(' -r -v -definer -g public D:/oracle/Ora_as10.1.2/javavm/lib/jcert.jar D:/oracle/Ora_as10.1.2/javavm/lib/jnet.jar D:/oracle/Ora_as10.1.2/javavm/lib/jsse.jar');
7. Connected as UTA user, create PUBLIC synonym for the HTTPS handler and the SSL Provider.
SQL>
DROP PUBLIC SYNONYM "com/sun/net/ssl/internal/www/protocol/https/Handler";
CREATE PUBLIC SYNONYM "com/sun/net/ssl/internal/www/protocol/https/Handler" for "com/sun/net/ssl/internal/www/protocol/https/Handler";
DROP PUBLIC SYNONYM "com/sun/net/ssl/internal/ssl/Provider";
CREATE PUBLIC SYNONYM "com/sun/net/ssl/internal/ssl/Provider" for "com/sun/net/ssl/internal/ssl/Provider";
二、安装axis
下载axis1.4,按照前面的步骤将其lib是jar拷贝到$ORACLE_HOME/javavm/lib下,以UTA身份登录执行如下命令
CALL dbms_java.loadjava(' -r -v -definer -g public D:/oracle/Ora_as10.1.2/javavm/lib/axis.jar D:/oracle/Ora_as10.1.2/javavm/lib/jaxrpc.jar D:/oracle/Ora_as10.1.2/javavm/lib/wsdl4j-1.5.1.jar D:/oracle/Ora_as10.1.2/javavm/lib/commons-logging-1.0.4.jar D:/oracle/Ora_as10.1.2/javavm/lib/commons-discovery-0.2.jar D:/oracle/Ora_as10.1.2/javavm/lib/saaj.jar');
执行过程中会有些错误产生,可以不用理会它。(可能是版本兼容的问题)
三、安装 oracle.xml.jaxp.JXDocumentBuilderFactory
去oracle网站下载oc4j,解压后找到lib下的xmlparserv2.jar,拷贝到oracle的javavm/lib下,进行安装
--install oracle.xml.jaxp.JXDocumentBuilderFactory
CALL dbms_java.loadjava(' -r -v -definer -g public D:/oracle/Ora_as10.1.2/javavm/lib/xmlparserv2.jar');
四、开发java stored procedure
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.security.Security;
import org.apache.axis.client.Call; import org.apache.axis.client.Service; public class ValidateXMLService { public static String validateXML(String xmlContent,String username,String password){ String endpoint = "https://localhost/UTA/services/ValidationService"; try { System.setProperty("javax.net.ssl.trustStore", "D:\\UTA\\ehc-server.keystore");
System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new java.net.URL(endpoint)); call.setOperationName("validation"); String result = (String) call.invoke(new Object[] { username,password,xmlContent}); // System.out.println("------------------------------------"); // System.out.println(result); // System.out.println("------------------------------------"); return result;
} catch (Exception e) { e.printStackTrace(); return null; } }
|
五、开发一个Function
create or replace FUNCTION XMLSERVICE
( xmlString VARCHAR2,username VARCHAR2,password VARCHAR2
) RETURN VARCHAR2
AS
language java name
'ValidateXMLService.validateXML(java.lang.String,java.lang.String,java.lang.String) return java.lang.String';
六、测试
set serveroutput on
call dbms_java.set_output(100000);
select uta.xmlservice('<docs><doc><a>test</a></doc></docs>','test','test') FROM dual;
注意:运行时可能会报某些类找不到,这时你可以再一次用loadjava命令load相应的包,不过要事先dropjava一下
如:CALL dbms_java.dropjava(' -r -v -definer -g public D:/oracle/Ora_as10.1.2/javavm/lib/axis.jar');
CALL dbms_java.loadjava(' -r -v -definer -g public D:/oracle/Ora_as10.1.2/javavm/lib/axis.jar');因为在导入时经常发生一些错误,多导入几次就可以了。
如果用call dbms_java.loadjava导入经常出错,请在<oracle_install_dir>/bin/
的目录下用loadjava命令执行(只能在服务器端执行):
loadjava -u sys/password -r -v -f -genmissing -s -grant public D:/oracle/Ora_as10.1.2/javavm/lib/axis.jar'
以上命令导入的axis可以被任何用户使用,若只想给一个用户使用去掉 -s -grant public 参数 sys/passwor 改成其他用户即可。
分享到:
相关推荐
axis打包axis打包axis打包axis打包axis打包axis打包axis打包axis打包axis打包axis打包axis打包axis打包axis打包axis打包axis打包axis打包axis打包axis打包axis打包axis打包axis打包axis打包axis打包axis打包axis打包...
axis的包axis的包axis的包axis的包
axis1.4完整包下载Apache Axis是一种SOAP(简单对象访问协议”)实现。 包含 Axis1.4的所有完整包。
axis JAR包,axis 完整包,各JAR包,测试可以用 版本是1.3
axis及其关联包
web service开发用到的重要包,包括axis.jar axis-scheme.jar activation.jar axis-ant.jar mail.jar pop3.jar等等。
AXIS所需完整JAR包,包含axis.jar、axis-ant.jar、asm.jar、activation.jar、asm-attrs.jar、commons-discovery-0.2.jar 等JAR包
java开发axis包下载java开发axis包下载
axis2 webservice 服务端jar包: -->axis2-kernel-1.6.1.jar -->axis2-spring-1.6.1.jar -->axis2-transport-http-1.6.1.jar -->XmlSchema-1.4.7.jar -->wsdl4j-1.6.2.jar -->axiom-api-1.2.12.jar -->axiom...
个人整理之前项目中有用到的axis2包,里面包含 1. 直接用的lib(包含可发布服务和调用服务的包); 2. 一个精简版的pom及对应的包(只够调用WS服务的包和对应的pom配置); 3. 一个详细版的pom及对应的包(里面包含...
java webservice开发 axis开发webservice程序,axis1.3和axis1.4 jar包。
搭建java的webservice用到的axis相关jar包,一共16个jar包都包含在里面了。搭建java的webservice用到的axis相关jar包,一共16个jar包都包含在里面了。搭建java的webservice用到的axis相关jar包,一共16个jar包都包含在...
Axis客户端所需要的jar包,之前公司用了webservice 搞了好就 写了好几种
axis2-adb-1.5.4.jar axis2-adb-codegen-1.5.4.jar axis2-codegen-1.5.4.jar axis2-corba-1.5.4.jar axis2-fastinfoset-1.5.4.jar axis2-java2wsdl-1.5.4.jar axis2-jaxbri-1.5.4.jar axis2-jaxws-1.5.4.jar axis2-...
axis2jar包 提供最好的jar包,
Axis2依赖的所有jar包,这些jar包是我在官网上找到axis2的war包,把它部署到tomcat之后,得到axis2工程,在这个工程里面完全拷贝的。
1、axis2相关jar包如下: axiom-api-1.2.10.jar axiom-dom-1.2.10.jar axiom-impl-1.2.10.jar axis2-adb-1.5.4.jar axis2-adb-codegen-1.5.4.jar axis2-codegen-1.5.4.jar axis2-corba-1.5.4.jar axis2-fastinfoset-...
axis-1.4 jar包,很多时候maven抓取不到,希望对大家有用
用于老版的AXIS开发WebService
axis2war 服务包 webservice