1

我是新手。

我正在尝试发布将 refcursor 作为 web 服务返回的过程。由于 web 服务不支持 ref 游标返回类型,所以我将返回类型更改为 pl/sql 表。

我在 Jdeveloper studio 11.1.2.4.0 中创建了 jax rpc 并对其进行了测试。这运行正常。我需要将它部署在 tomcat 服务器上并且完全失败了。

我将 Jdeveloper 生成的 war 文件复制到 Tomcat 中的 webapps 目录并启动了 Tomcat,但这不起作用,因为引发了以下异常:

java.lang.ClassCastException: omsdevconn.MyWebServicetomcatUser cannot be cast to javax.servlet.Servlet

如果有人已经这样做了,那么我可以获得在 Tomcat 6.0.37 上部署它的过程的步骤吗?

提前致谢

4

2 回答 2

0

将 plsql 过程公开为 Web服务时部署 Jdeveloper 生成的服务的另一种方法

我不允许发布超过 2 个链接,所以请在 http: 之后添加额外的“/”以更正链接

此解决方案使用 Apache Axis,它允许您通过在幕后创建 SOAP 请求并调用为其提供肥皂消息的服务方法,直接从浏览器调用您的 Web 服务(未公开为 restful)。

1)在Jdeveloper中生成一个webservice。它将在web-inf和一些其他xml文件中创建java文件和相应的“.class”文件、“wsdl文件”。记下 .class 文件和 wsdl 文件的 LOCATION。

2)下载eclipse并解压到你的硬盘上(它需要java来运行所以你必须在系统上安装java。你可以从http://www.eclipse.org/downloads/packages/eclipse-ide-java-下载eclipse ee-developers/junosr1

3)从这里下载 Eclipse 的 Axis 插件:http://www.apache.org/dyn/mirrors/mirrors.cgi/axis/axis2/java/core/1.6.2/axis2-eclipse-service-plugin-1.6.2 .zip
并将其安装在 Eclipse 中。安装说明:http://axis.apache.org/axis2/java/core/tools/eclipse/plugin-installation.html

4)通过eclipse轴插件生成aar文件。说明:http://axis.apache.org/axis2/java/core/tools/eclipse/servicearchiver-plugin.html#Operation

5)在tomcat-user.xml文件中进行如下修改

<role rolename="tomcat"/>
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<role rolename="manager-jmx"/>  
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat,manager-gui,admin-gui,manager-jmx"/>

6)如果您在代码中使用 ORACLE 特定类(Jdeveloper 很可能会生成该类):在 tomcat(server.xml 或 context.xml)中配置 oracle 数据源。说明:http://www.oracle.com/technetwork/articles/oem/ucp-jdbc-tomcat-355431.html 确保 Tomcat/lib 文件夹中有 ojdbc6.jar 和 ucp.jar。

7)从这里下载轴战争文件部署在tomcat中:http://www.apache.org/dyn/mirrors/mirrors.cgi/axis/axis2/java/core/1.6.2/axis2-eclipse-service-plugin- 1.6.2.zip

解压 zip ,里面会有一个axis2.war文件。将此war文件放在“\Tomcat\webapps”目录下

8)启动tomcat。在 tomcat 控制台上查看部署轴是否有任何错误。如果一切正常,您应该能够在 http://yourhost:yourport/axis2/ 上看到轴页面

9)点击管理链接。输入用户名“admin”和密码“Axis2”并登录

10)点击上传,浏览到你在第4步生成的aar文件的位置并上传。显示成功后,单击可用服务。这需要一些时间,但您应该能够看到您的服务。单击服务以查看 wsdl 进行验证

11)从浏览器调用您的服务方法并交叉手指和脚趾。请注意,要点击的链接将类似于

http://yourhost:yourport/ axis2/services / YourServiceName/serviceMethod ?arg1=blah&

确保您的 arg 名称正确。您应该能够从 wsdl 中看到正确的名称

于 2013-06-13T14:27:04.313 回答
0

下载 jaxws-rt-2.0-SNAPSHOT.jar 和 jaxws-2_0.jar 复制到 $CATALINA_HOME/lib 文件夹

在 web-app 下的 web.xml 中添加以下内容

<web-app>  
**<listener>  
<listener-class>  
com.sun.xml.ws.transport.http.servlet.WSServletContextListener  
</listener-class>  
</listener>**  
............<!--your other servlet definations-->
</web-app>  

在您的应用程序 web-inf 文件夹下创建 sun-jaxws.xml 并配置端点。您可以查看 jdeveloper 生成的 xml 文件以获取所有信息

示例 sun-jaxws.xml

<?xml version="1.0" encoding="UTF-8"?>
<endpoints  xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"version="2.0">
<endpoint name="fromwsdl"
interface="com.foo.yourserviceInterface"
implementation="com.foo.yourserviceClass"
wsdl="WEB-INF/wsdl/youservice.wsdl"
service="YourService"
port="YourServicePort"
url-pattern="/serviceAccessUrl" />
</endpoints> 

为您的应用程序创建战争并在 tomcat/webapps 下部署您的应用程序 start tomcat

启动 tomcat 后,您可以通过 http:/host:port/yourservicename/methodInService 访问该服务

当您调用 oracle plsql 代码并且如果您正在使用任何 oracle 特定调用(如 OracleCallabelStatement),那么在运行时您将在尝试将 callabelstatement 转换为 oraclecallabelstatement 时从 tomcat 数据源获得类转换异常,因为您需要在 tomcat 中配置 oracledatasource

http://www.oracle.com/technetwork/articles/oem/ucp-jdbc-tomcat-355431.html

有关用于 XML Web 服务的 Java API (JAX-WS) 的更多信息

https://jax-ws.java.net/nonav/2.2.1/docs/UsersGuide.html#1.0_Introduction

于 2013-06-12T14:21:36.043 回答