Моя цель - контролировать / форматировать ответ веб-службы JAX-RPC.То, что я сделал до сих пор, дает мне «новый ответ».
Но он должен соответствовать «старому ответу».Любые решения, связанные с Java или Weblogic 12c (12.2.1.3.0), приветствуются.(подробнее после)
В обоих случаях вызываемый WebMethod возвращает объект пользовательского типа «Person», в «старом ответе» есть ссылка на него, но в моем «новом ответе» его нет,«новый ответ»:
<?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://www.w3.org/2001/XMLSchema" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<env:Header/>
<env:Body>
<m:GetUserInfoServiceResponse xmlns:m="http://example.org">
<result>
<java:network xmlns:java="java:my.package">intranet</java:network>
<java:area xmlns:java="java:my.package">ABC</java:area>
<java:defaultcat xmlns:java="java:my.package" href="#i4"/>
<java:code xmlns:java="java:my.package">6606</java:code>
</result>
</m:GetUserInfoServiceResponse>
<xs:string id="i4"/>
</env:Body>
</env:Envelope>
«старый ответ»:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<env:Body env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<m:GetUserInfoServiceResponse xmlns:m="http://example.org">
<result xmlns:n1="java:my.package"
xsi:type="n1:Person">
<network xsi:type="xsd:string">intranet</network>
<area xsi:type="xsd:string">ABC</area>
<defaultcat href="#ID_4">
</defaultcat>
<code xsi:type="xsd:string">6606</code>
</result>
</m:GetUserInfoServiceResponse>
<xsd:string xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xsi:type="xsd:string"
id="ID_4">
</xsd:string>
</env:Body>
</env:Envelope>
Подробности:
Я поддерживаю несколько веб-сервисов, что теперь подразумевает обновление задействованных технологий.,Как обновление java 1.4 до 1.8, WebLogic 8.1 до 12c ... И в этом случае я также перекодирую несколько веб-сервисов java RPC, которые были реализованы с использованием EJB и задачи ant "wsgen" и "rpcservices" ...
На протяжении многих лет стало трудно отслеживать, сколько клиентов там и где они находятся ... Так что изменение клиентской части не рассматривается.Отсюда моя проблема.
Что я сделал (используя Eclipse, плагин инструментов webLogic, ANT):
- Новый проект -> WebLogic -> Проект веб-служб
- Получить WSDL
- Создать исходные файлы с помощью задачи ANT "wsdlc"
- Пересмотреть файлы и проект wsImpl.java (реализовать мой код, добавить все необходимые библиотеки Lib и структуризатор классов ...)
- Скомпилируйте веб-службы в файл war с помощью ANT "jwsc" -> "jws"
- Создание файла .ear (необязательный шаг, я думаю, ^^)
- Развертывание