org.apache.xml.security.c14n.CanonicalizationException: элемент listFunctions имеет относительное пространство имен: xmlns = «xxx_xxx_listFunctions»

1

Я новичок в 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>
Теги:
soap
web-services

2 ответа

0

Мне не понятно, как ты это решил

0

Я понял проблему и исправил проблему. Проблема была не в Axis2. Исключение, указанное в моем вопросе, связано с тем, как работает система безопасности XML. Файл services.xml в.aar имел targetNamespace = "test_vish_listRoutines". Клиентский код, потребляющий веб-сервисы с WS-Security, установлен в true, использовал это пространство имен. Он вызывал "listRoutines", который является относительным пространством имен и не разрешен в стандартном XMLSecurity. На стороне Serer метод обслуживания, связанный с listRoutines, не вызывался сам.

Изменение относится к стандартному пространству имен URL-адресов, например " http://www.testing.com/webserice".

Вздох облегчения. Надеюсь это поможет

  • 0
    Спас мой день !! Я применял пружинный перехватчик wss4j и замена относительного пространства имен Uris работала как шарм

Ещё вопросы

Сообщество Overcoder
Наверх
Меню