1

我正在将使用 java EJB 并安装在 WebLogic 8.1 中的 Web 服务升级到 WebLogic 12c 中的 JAX-RPC Web 服务(WebLogic Server 版本:12.2.1.3.0)

它们是同一个项目中的几个 WS,具有相同的上下文根。所以每个人的地址就像:

[server]:[port]/services/ws1
[server]:[port]/services/ws2
[server]:[port]/services/ws3
...

在我的开发中,我无法为所有 Web 服务设置相同的上下文根/路径“服务”。

是否有可能对所有这些都有相同的上下文根?(像上面的例子?)

详细说明:我得到了一个“Weblogic Web Services Project”(Eclipse->新建项目->Oracle->WebLogic->Web Services->Web Service Project),里面有多个Web Services。

Web 服务是由具有 ANT wsdlc 的每个 WSDL 制成的。所以我得到了一个“ws.jar”(编译的 WSDL)和 wsImpl.java(我放我的业务代码的地方)

所以“源文件”的最终列表如下所示:

ws1.jar
wsImpl1.java
ws2.jar
wsImpl2.java
ws3.jar
wsImpl3.java
...

然后我尝试用多个 jws 运行 ANT jwsc,每个 WS 一个给他们所有 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>
4

1 回答 1

1

在@EmmanuelCollin 评论之后,我能够进行更好的搜索并找到使用的解决方案

<module contextPath="services" name="myJar" >
   <jws .../>
   <jws .../>
</module>

如: Oracle 帮助中心《示例 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 下。

谢谢!

于 2019-01-18T16:36:17.783 回答