`

oracle10g 中 运用axis包

阅读更多

在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 改成其他用户即可。

 

0
0
分享到:
评论

相关推荐

    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的包axis的包axis的包

    axis的包axis的包axis的包axis的包

    axis1.4完整包下载

    axis1.4完整包下载Apache Axis是一种SOAP(简单对象访问协议”)实现。 包含 Axis1.4的所有完整包。

    axis JAR包,axis 完整包

    axis JAR包,axis 完整包,各JAR包,测试可以用 版本是1.3

    axis及其关联包

    axis及其关联包

    axis包最完整版包括axis.jar和axis-scheme.jar等

    web service开发用到的重要包,包括axis.jar axis-scheme.jar activation.jar axis-ant.jar mail.jar pop3.jar等等。

    AXIS所需完整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包下载java开发axis包下载

    完整的axis2 jar包包含实例.zip

    axis2 webservice 服务端jar包: --&gt;axis2-kernel-1.6.1.jar --&gt;axis2-spring-1.6.1.jar --&gt;axis2-transport-http-1.6.1.jar --&gt;XmlSchema-1.4.7.jar --&gt;wsdl4j-1.6.2.jar --&gt;axiom-api-1.2.12.jar --&gt;axiom...

    axis2依赖包大全

    个人整理之前项目中有用到的axis2包,里面包含 1. 直接用的lib(包含可发布服务和调用服务的包); 2. 一个精简版的pom及对应的包(只够调用WS服务的包和对应的pom配置); 3. 一个详细版的pom及对应的包(里面包含...

    axis1.3 axis1.4jar包

    java webservice开发 axis开发webservice程序,axis1.3和axis1.4 jar包。

    axis相关jar包

    搭建java的webservice用到的axis相关jar包,一共16个jar包都包含在里面了。搭建java的webservice用到的axis相关jar包,一共16个jar包都包含在里面了。搭建java的webservice用到的axis相关jar包,一共16个jar包都包含在...

    Axis2.jar包

    Axis客户端所需要的jar包,之前公司用了webservice 搞了好就 写了好几种

    axis2相关的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-1.5.4.jar axis2-java2wsdl-1.5.4.jar axis2-jaxbri-1.5.4.jar axis2-jaxws-1.5.4.jar axis2-...

    axis2jar包

    axis2jar包 提供最好的jar包,

    Axis2依赖的所有jar包

    Axis2依赖的所有jar包,这些jar包是我在官网上找到axis2的war包,把它部署到tomcat之后,得到axis2工程,在这个工程里面完全拷贝的。

    axis2相关jar包~eclipse支持插件包

    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 代码jar包

    axis-1.4 jar包,很多时候maven抓取不到,希望对大家有用

    axis jar包下载

    用于老版的AXIS开发WebService

    axis2服务包

    axis2war 服务包 webservice

Global site tag (gtag.js) - Google Analytics