我正在将使用Java EJB和WebLogic 8.1中安装的Web Service升级到WebLogic 12c(WebLogic Server版本:12.2.1.3.0)中的JAX-RPC Web Services
它们是同一项目中具有相同上下文根的几个WS。因此,每个地址的地址就像:
[server]:[port]/services/ws1
[server]:[port]/services/ws2
[server]:[port]/services/ws3
...
在我的开发中,我无法为所有Web服务设置相同的上下文根目录/路径“服务”。
是否所有这些对象都有相同的上下文根? (就像上面的例子一样?)
详细说明: 我有一个带有多个Web服务的“ Weblogic Web服务项目”(Eclipse->新项目-> Oracle-> WebLogic-> Web服务-> Web服务项目)。
Web服务是由每个WSDL和ANT wsdlc组成的。因此,我得到了一个“ ws.jar”(已编译的WSDL)和wsImpl.java(我在其中放置了业务代码)
因此“源文件”的最终列表如下:
ws1.jar
wsImpl1.java
ws2.jar
wsImpl2.java
ws3.jar
wsImpl3.java
...
然后,我尝试使用多个jws运行ANT jwsc,每个WS使用一个jwssc,从而为它们提供所有contextpath =“ services”。 当到第二个jws时,出现错误“此应用程序已在使用Web应用程序my / package / ws2.war的上下文路径服务。”
<target name="build-service">
<jwsc srcdir="${src.dir}" destdir="${final.dir}/wars" verbose="true" keepGenerated="false" debug="on" includeantruntime="false">
<classpath refid="project.class.path.build.services" />
<jws file="my/package/ws1Impl.java" compiledWsdl="${output.dir}/compiledWsdl/ws1.jar">
<WLHttpTransport contextpath="services" serviceuri="ws1" portname="ws1Port" />
</jws>
<jws file="my/package/ws2Impl.java" compiledWsdl="${output.dir}/compiledWsdl/ws2.jar">
<WLHttpTransport contextpath="services" serviceuri="ws2" portname="ws2Port" />
</jws>
</jwsc>
</target>
答案 0 :(得分:0)
使用@EmmanuelCollin进行评论我能够进行更好的搜索,并使用
找到了解决方案<module contextPath="services" name="myJar" >
<jws .../>
<jws .../>
</module>
如: Oracle Help Center“示例4将多个Web服务打包到一个WAR文件中”
然后我用ANT将生成的aplication.xml和.war文件打包到一个.ear中。
<ear destfile="${dist.dir}/${ant.project.name}.ear" appxml="${conf.dir}/application.xml">
<metainf dir="${build.dir}/META-INF"/>
<fileset dir="${dist.dir}" includes="*.jar,*.war"/>
</ear>
最后,将.ear部署到weblogic 12c服务器中并成功测试了Web服务响应。全部都在同一个contextPath下。
谢谢!