Несколько веб-сервисов с одинаковым корневым контекстом
Я обновляю веб-сервисы, которые использовали java EJB и wer, установленные в WebLogic 8.1, до веб-сервисов JAX-RPC в WebLogic 12c (версия сервера WebLogic: 12.2.1.3.0)
Это несколько WS в одном проекте с одинаковым контекстным корнем. Таким образом, адрес для каждого типа:
[server]:[port]/services/ws1
[server]:[port]/services/ws2
[server]:[port]/services/ws3
...
В моей разработке я не могу установить один и тот же контекст / путь "службы" для всех веб-служб.
Возможно ли иметь одинаковый корень контекста для всех них? (Как в примере выше?)
Подробное описание: Я получил "Проект Weblogic Web Services" (Eclipse-> новый проект ->Oracle->WebLogic->Web Services-> Web Service Project) с несколькими веб-службами.
Веб-сервисы были сделаны из каждого WSDL с ANT wsdlc. Итак, я получил "ws.jar" (скомпилированный WSDL) и wsImpl.java (где я положил свой бизнес-код)
Итоговый список "исходных файлов" выглядит так:
ws1.jar
wsImpl1.java
ws2.jar
wsImpl2.java
ws3.jar
wsImpl3.java
...
Затем я пытаюсь запустить ANT jwsc с несколькими jws, по одному для каждой WS, предоставляя им все contextpath="services". Когда он доходит до второго jws, я получаю сообщение об ошибке "Службы контекстного пути для веб-приложения 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 ответ
Folowing @EmmanuelCollin comment Я смог сделать лучший поиск и нашел решение, используя
<module contextPath="services" name="myJar" >
<jws .../>
<jws .../>
</module>
как в: Справочном центре Oracle "Пример 4 Упаковка нескольких веб-сервисов в один файл WAR"
Затем я упаковал сгенерированные файлы aplication.xml и.war в.ear с помощью ANT:
<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 и успешно протестировал ответ веб-служб. Все под тем же contextPath.
Спасибо!