Я новичок в Axis2
и веб-сервисах. У меня есть веб-службы axis2. Все работает нормально, когда ws-security отключена. Когда ws-security включен, я получаю следующее исключение в журнале сервера. Я отлаживал метод класса обслуживания, который не вызывается. Прикреплены два используемых service.xmls.
Клиент, вызывающий веб-сервис, получает последующую ошибку мыла - неожиданный EOF в прологе
Я получаю следующее исключение java в tomcat:
org.apache.xml.security.c14n.CanonicalizationException: Element listFunctions has a relative namespace: xmlns="test_vish_listFunctions"
at org.apache.xml.security.c14n.implementations.Canonicalizer20010315.handleAttributesSubtree(Unknown Source)
at org.apache.xml.security.c14n.implementations.CanonicalizerBase.canonicalizeSubTree(Unknown Source)
at org.apache.xml.security.c14n.implementations.CanonicalizerBase.engineCanonicalizeSubTree(Unknown Source)
at org.apache.xml.security.c14n.implementations.CanonicalizerBase.engineCanonicalizeSubTree(Unknown Source)
at org.apache.xml.security.c14n.Canonicalizer.canonicalizeSubtree(Unknown Source)
at org.apache.xml.security.utils.XMLUtils.outputDOM(Unknown Source)
Ниже приведена версия server.xml, когда ws-security отключена, и все работает
<service name="test_vish_listFunctions" targetNamespace="test_vish_listFunctions">
<description>
This service is to get the list functions
</description>
<schema schemaNamespace="test_listFunctions"/>
<parameter name="ServiceClass">vish.web.ws.service.ListFunctionsService</parameter>
<operation name="listFunctions">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
<module ref="soapmonitor"/>
</service>
Следующие services.xml, когда ws-security включен
<service name="test_vish_listRoutines" targetNamespace="test_vish_listRoutines">
<description>Service description for test_vish_listRoutines</description>
<schema schemaNamespace="test_vish_listRoutines"/>
<parameter name="ServiceClass">test.web.ws.service.ListRoutinesService</parameter>
<parameter name = "disasbleREST">true</parameter>
<operation name="listRoutines">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</operation>
<module ref="soapmonitor"/>
<module ref="rampart" />
<parameter name = "InflowSecurity"><action>
<items>UsernameToken</items>
<passwordCallbackClass>test.web.ws.control.PWCBHandler</passwordCallbackClass>
</action>
</parameter>
</service>
Мне не понятно, как ты это решил
Я понял проблему и исправил проблему. Проблема была не в Axis2. Исключение, указанное в моем вопросе, связано с тем, как работает система безопасности XML. Файл services.xml в.aar имел targetNamespace = "test_vish_listRoutines". Клиентский код, потребляющий веб-сервисы с WS-Security, установлен в true, использовал это пространство имен. Он вызывал "listRoutines", который является относительным пространством имен и не разрешен в стандартном XMLSecurity. На стороне Serer метод обслуживания, связанный с listRoutines, не вызывался сам.
Изменение относится к стандартному пространству имен URL-адресов, например " http://www.testing.com/webserice".
Вздох облегчения. Надеюсь это поможет