У меня есть конечная точка JAX-WS с несколькими методами, которые все возвращают документы XML, преобразованные в строку.
В течение некоторого времени это работало нормально на Sun Java System Application Server 9.1 Update 2, но его необходимо развернуть на новом сервере.
Он был развернут на Glassfish 3.0.1 без каких-либо проблем, за исключением одной небольшой проблемы.Пример исходного ответа:
<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:getTransactionTypesResponse xmlns:ns2="http://myns.com.au/">
<return xmlns=""><?xml version="1.0" encoding="UTF-8"?>
<my_xml version="1.2" query_date="">
<add_transaction_type description="Contributions" name="Contribution" type="C"/>
<add_transaction_type description="Transfer In" name="Xfr or R/O In" type="X"/>
</my_xml>
</return>
</ns2:getTransactionTypesResponse>
</S:Body>
</S:Envelope>
На новом сервере он возвращается как:
<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:getTransactionTypesResponse xmlns:ns2="http://myns.com.au/">
<return><?xml version="1.0" encoding="UTF-8"?>
<myxml version="1.2" query_date="">
<add_transaction_type description="Contributions" name="Contribution" type="C"/>
<add_transaction_type description="Administration Fee" name="Fee:AUM" type="U"/>
</my_xml>
</return>
</ns2:getTransactionTypesResponse>
</S:Body>
</S:Envelope>
Почти то же самое, но экранируются только угловые скобки открытия, а незакрывающие скобки.
Я проверил это с помощью прямых запросов HTTP POST, поэтому я знаю, что он не искажается никаким клиентским кодом.
Я снова обновил сервер до Glassfish 3.1, думая тамбыла проблема с включенными библиотеками веб-сервиса, но безуспешно.Мое приложение полностью зависит от поддержки веб-сервиса в glassfish - оно не включает ни одной из своих собственных библиотек WS или XML.
Конечная точка в основном определяется следующим образом:
@WebService
@SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)
public class MyEndpoint {
@WebMethod()
public String getTransactionTypes() {
return someMethodThatReturnsXmlString();
}
}
Я былНе удалось найти кого-либо еще с этой проблемой, кроме ссылки от этого автора, который заметил, что он является потребителем службы: Могу ли я заставить JAXB не преобразовывать «в», например, при сортировке в XML?
Это опубликованная услуга, поэтому я не могу полагаться на то, что потребители смогут обновить своих клиентов, чтобы справиться с этим.Интересно, что мой существующий интерфейс тестирования с использованием сгенерированного Java-клиента, похоже, не беспокоит его, но я не могу на это полагаться.
Кто-нибудь сталкивался с этим и смог его решить?Есть ли способ, которым я могу подключиться к платформе WS и сделать свой собственный выход в качестве обходного пути?
Заранее спасибо.