具有相同上下文根的多个Web服务

时间:2019-01-18 13:57:42

标签: java web-services weblogic weblogic12c contextroot

我正在将使用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>

1 个答案:

答案 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下。

谢谢!