在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的1.4版本,这是一个较早但仍然在某些环境中使用的版本。 在描述中提到,“包含Axis1.4的所有完整包”,这意味着下载包中包含了运行和开发SOAP Web服务所需的...
1. **设置环境**:将Axis的相关JAR包添加到项目的类路径中。 2. **生成服务**:使用 Axis的wsdl2java工具从WSDL生成Java代码。 3. **部署服务**:将生成的服务类部署到Web容器,如Tomcat或Jetty。 4. **创建客户端**...
标题提到的"Axis包最完整版包括axis.jar和axis-scheme.jar等",这意味着这个压缩包包含了Axis框架的核心组件和额外的支持库。 1. **Axis.jar**:这是Axis的主要库文件,它实现了SOAP(Simple Object Access ...
在本文中,我们将深入探讨Axis及其关联包的核心概念、功能和应用场景。 ### Axis核心概念 1. **SOAP(Simple Object Access Protocol)**: 是一种基于XML的协议,用于交换结构化和类型化的信息。Axis通过SOAP协议...
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-...
AXIS所需完整JAR包,包含axis.jar、axis-ant.jar、asm.jar、activation.jar、asm-attrs.jar、commons-discovery-0.2.jar 等JAR包
**标题:“Axis2.jar包”** **描述:**在IT行业中...综上所述,Axis2.jar包及其相关的jar文件是Java环境中构建和使用Web服务的关键组件,它为开发者提供了高效、灵活的工具集,使得Web服务的开发变得更加容易和可靠。
标题 "axis jar包下载" 指的是AXIS框架的核心库文件,这是一组Java类库,主要用于在老版本的AXIS中开发Web服务。AXIS是一个开源的、基于Java的工具,它允许开发者轻松地创建和部署Web服务。这个框架在早期Web服务...
本文将深入探讨Axis的相关知识点,特别是关于"axis-1.4 jar包"的内容。 一、Axis简介 Axis是Java平台上的一个开源框架,它允许开发者创建和部署Web服务。该框架遵循SOAP 1.1规范,并支持WSDL(Web服务描述语言)...
AXIS1全套JAR包是针对AXIS 1版本的Web服务开发工具包,它包含了进行Java Web服务开发所需的全部核心库。AXIS是Apache软件基金会的一个开源项目,专门用于创建、部署和管理Web服务。AXIS1是早期版本,但至今仍被一些...
标题中的"axis包 SNAPSHOT jar包"指的是Apache Axis2的开发工具包,它包含了两个SNAPSHOT版本的Eclipse插件。这些插件是用于在Eclipse集成开发环境中辅助开发和管理Axis2服务的重要工具。 首先,让我们详细了解下...
标题中的“Axis2依赖的所有jar包”指的是Apache Axis2框架运行所必需的Java库文件,这些文件以.jar格式存在,包含了各种类和资源,用于支持 Axis2 的功能。Apache Axis2 是一个流行的Web服务引擎,它允许开发人员...
个人整理之前项目中有用到的axis2包,里面包含 1. 直接用的lib(包含可发布服务和调用服务的包); 2. 一个精简版的pom及对应的包(只够调用WS服务的包和对应的pom配置); 3. 一个详细版的pom及对应的包(里面包含...
java开发axis包下载java开发axis包下载
标题中的"axis2 jar包"指的是Axis2项目的核心库,这些jar文件包含了运行和开发Web服务所需的类和接口。在Java开发环境中,jar(Java Archive)文件是一种归档格式,用于打包多个类文件和其他资源,以便于分发和使用...
标题中的"axis包含日志jar"指的是Axis2框架在开发过程中使用了日志相关的JAR文件。Axis2是Apache软件基金会开发的一个Web服务引擎,它主要用于处理SOAP消息,实现Web服务的发布、消费和集成。在 Axis2 中,日志功能...
描述中提到的难点在于,Axis2项目通常需要很多依赖jar包,这可能导致开发者在配置环境时遇到麻烦,因为需要逐一查找并添加这些依赖。 Axis2的核心功能是作为SOAP消息处理引擎,它支持WSDL(Web服务描述语言)的第一...
"Axis1.1lib包"是针对Axis1.1版本的Web服务开发工具包,它在早期的Java Web服务开发中扮演了重要角色。Axis是一个开源项目,由Apache软件基金会维护,专门用于创建、部署和管理基于SOAP(简单对象访问协议)的Web...