2014-12-23 1 views
1

Я новичок в Axis2 и веб-сервисах. У меня есть веб-службы axis2. Все работает нормально, когда ws-security отключена. Когда ws-security включен, я получаю следующее исключение в журнале сервера. Я отлаживал метод класса обслуживания, который не вызывается. Прикреплены два используемых service.xmls.org.apache.xml.security.c14n.CanonicalizationException: Элемент listFunctions имеет относительное пространство имен: xmlns = "xxx_xxx_listFunctions"

Клиент Призывая вебсервис получить ошибку followoing мыла - неожиданный EOF в прологе

Я получаю следующее исключение Java в коте:

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-безопасность выкл и все работает

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

ответ

0

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

Изменение в стандартном пространстве имен URL-типа, например 'http://www.testing.com/webserice, решило проблему.

Вздох рельефа на пол. Надеюсь, это поможет

Смежные вопросы