javax.xml.ws.WebServiceException: java.lang.RuntimeException: неверное значение включения: ноль - PullRequest
3 голосов
/ 06 февраля 2012

Я разработал веб-сервисы, используя CXF.Сегодня я добавил простой токен безопасности имени пользователя для веб-службы.После этого, когда я пытаюсь развернуть веб-сервис, я получаю следующее исключение

javax.xml.ws.WebServiceException: java.lang.RuntimeException: Incorrect inclusion value: null
Failed to build the policy 'UsernameToken':Incorrect inclusion value: null

Я использую Jboss 6.Ниже приведен мой фрагмент политики, который я добавил в файл wsdl.

<wsp:Policy wsu:Id="UsernameToken"
        xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
        xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
        <wsp:ExactlyOne>
            <wsp:All>
                <!-- Empty <TransportBinding/> element required due to bug in CXF 2.2.6 -->
                <sp:TransportBinding />
                <sp:SupportingTokens>
                    <wsp:Policy>
                        <sp:UsernameToken sp:IncludeToken=".../IncludeToken/AlwaysToRecipient" />
                    </wsp:Policy>
                </sp:SupportingTokens>
            </wsp:All>
        </wsp:ExactlyOne>
    </wsp:Policy>

Ниже приведен мой файл cxf.xml

<jaxws:endpoint id="UpcLineOfBusinessServiceImpl"
        address="/upcLineOfBusinessService" wsdlLocation="../wsdl/upclineofbusinessserviceimpl.wsdl">
        <jaxws:implementor>
            <ref bean="upcLineOfBusinessService"></ref>
        </jaxws:implementor>
        <jaxws:inInterceptors>
            <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
            <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
                <constructor-arg>
                    <map>
                        <entry key="action" value="UsernameToken" />
                        <entry key="passwordType" value="PasswordText" />
                        <entry key="passwordCallbackClass" value="com.tecnotree.upc.security.PasswordCallBack" />
                    </map>
                </constructor-arg>
            </bean>
        </jaxws:inInterceptors>
    </jaxws:endpoint>

Пожалуйста, помогите мне.Заранее спасибо

1 Ответ

4 голосов
/ 18 апреля 2012

Я недавно сталкивался с тем же исключением. Проблема была неверной sp: IncludeToken значение. После того, как я изменил его на http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient все работало нормально.

Доступные значения определены в org.apache.cxf.ws.security.policy.SP12Constants (для WS-SecurityPolicy 1.2) или в org.apache.cxf.ws.security.policy.SP11Constants (для 1.1)

Полное определение политики выглядит следующим образом:

<wsp:Policy xmlns:wsp="http://www.w3.org/ns/ws-policy">
    <wsp:ExactlyOne>    
        <wsp:All>
            <sp:SupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
                <wsp:Policy>
                    <sp:UsernameToken
                        sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
                        <wsp:Policy>
                            <sp:WssUsernameToken10 />
                            <sp:HashPassword />
                        </wsp:Policy>
                    </sp:UsernameToken>
                </wsp:Policy>
            </sp:SupportingTokens>
        </wsp:All>
    </wsp:ExactlyOne>
</wsp:Policy>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...