Несколько веб-сервисов с одинаковым корневым контекстом

Я обновляю веб-сервисы, которые использовали 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.

Спасибо!

Другие вопросы по тегам