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

Я обновляю веб-службы, которые использовали java EJB и были установлены в WebLogic 8.1, до веб-служб JAX-RPC в WebLogic 12c (версия WebLogic Server: 12.2.1.3.0)

Это несколько WS в одном проекте с одним и тем же корневым контекстом. Таким образом, адрес для каждого выглядит так:

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

В моей разработке я не могу установить один и тот же корневой/путь контекста «сервисы» для всех веб-служб.

Возможно ли иметь один и тот же корень контекста для всех из них? (Как в примере выше?)

Подробное описание: У меня есть «Проект веб-служб Weblogic» (Eclipse-> новый проект -> Oracle-> WebLogic-> Веб-службы-> Проект веб-службы) с несколькими веб-службами.

Веб-сервисы были созданы из каждого 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>

Корень контекста должен быть уникальным для каждого хоста. Вы можете объединить все сервисы в один военный файл или использовать http-сервер перед вашими сервисами для отправки запросов трем веб-приложениям.

Emmanuel Collin 18.01.2019 15:56

Спасибо за комментарий @EmmanuelCollin. Я думаю, что объединение всех сервисов в один военный файл может быть решением, которое я ищу, но я не могу понять, как это сделать, поскольку при запуске ANT jws (как в моем посте) он генерирует один военный файл для каждой WS. Есть ли команда/тег ANT для объединения jws в один и тот же военный файл?

Drew 18.01.2019 16:11
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
1 249
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Следуя комментарию @EmmanuelCollin, я смог улучшить поиск и нашел решение, используя

<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.

Спасибо!

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