Note that there are some explanatory texts on larger screens.

plurals
  1. POWS-Security not working with CXF
    primarykey
    data
    text
    <p>I' am trying to develop a WS-security enabled web service with Apache CXF. Tutorial that I am following is <a href="http://www.benmccann.com/blog/apache-cxf-tutorial-ws-security-with-spring/">here</a>. Unfortunately I am continuously getting the following error much to chagrin. I' am using Spring framework 3.0.5 and CXF 2.3.3 and also WSS4J 1.6.1. This may be a silly question but I am almost fed up with finding a solution. Please please help ....</p> <pre><code>org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.apache.ws.security.util.WSSecurityUtil.decodeAction(Ljava/lang/String;Ljava/util/Vector;Lorg/apache/ws/security/WSSConfig;)I org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:839) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) root cause java.lang.NoSuchMethodError: org.apache.ws.security.util.WSSecurityUtil.decodeAction(Ljava/lang/String;Ljava/util/Vector;Lorg/apache/ws/security/WSSConfig;)I org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor$WSS4JOutInterceptorInternal.handleMessage(WSS4JOutInterceptor.java:192) org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor$WSS4JOutInterceptorInternal.handleMessage(WSS4JOutInterceptor.java:134) org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516) org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313) org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265) org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) $Proxy800.getEmployee(Unknown Source) org.samith.web.controller.FrontController.frontRequestHandler(FrontController.java:35) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) </code></pre> <p>This is how my client code looks like.</p> <pre><code>ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( new String[]{"SpringCXFClient-servlet.xml"}); AuthService client = (AuthService) context.getBean("client"); Employee employee = client.getEmployee("0223938"); model.addAttribute("lastname", employee.getLastName()); model.addAttribute( "firstname", employee.getFirstName()); </code></pre> <p>and my clientCXF.xml file,</p> <pre><code>&lt;bean id="proxyFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"&gt; &lt;property name="serviceClass" value="org.samith.AuthService"/&gt; &lt;property name="address" value="http://localhost:8080/SpringCXFServer/WSServices/corporateAuthService"/&gt; &lt;property name="inInterceptors"&gt; &lt;list&gt; &lt;ref bean="logIn" /&gt; &lt;/list&gt; &lt;/property&gt; &lt;property name="outInterceptors"&gt; &lt;list&gt; &lt;ref bean="logOut" /&gt; &lt;ref bean="saajOut" /&gt; &lt;ref bean="wss4jOut" /&gt; &lt;/list&gt; &lt;/property&gt; &lt;/bean&gt; &lt;bean id="client" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean" factory-bean="proxyFactory" factory-method="create" /&gt; &lt;bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/views/" p:suffix=".jsp" p:order="2" /&gt; &lt;bean id="logIn" class="org.apache.cxf.interceptor.LoggingInInterceptor" /&gt; &lt;bean id="logOut" class="org.apache.cxf.interceptor.LoggingOutInterceptor" /&gt; &lt;bean id="saajOut" class="org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor" /&gt; &lt;bean id="wss4jOut" class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor"&gt; &lt;constructor-arg&gt; &lt;map&gt; &lt;entry key="action" value="UsernameToken" /&gt; &lt;entry key="user" value="ws-client" /&gt; &lt;entry key="passwordType" value="PasswordText" /&gt; &lt;entry key="passwordCallbackClass" value="org.samith.ClientPasswordCallback" /&gt; &lt;/map&gt; &lt;/constructor-arg&gt; &lt;/bean&gt; </code></pre> <p>and ClientPasswordCallback.java file</p> <pre><code>public class ClientPasswordCallback implements CallbackHandler { public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { WSPasswordCallback pc = (WSPasswordCallback) callbacks[0]; // set the password for our message. pc.setPassword("myname"); } </code></pre> <p>}</p> <p>and finally client pom.file CXF dependencies</p> <pre><code>&lt;dependency&gt; &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf&lt;/artifactId&gt; &lt;version&gt;${cxf.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf-rt-frontend-jaxws&lt;/artifactId&gt; &lt;version&gt;${cxf.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf-rt-transports-http&lt;/artifactId&gt; &lt;version&gt;${cxf.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf-rt-transports-http-jetty&lt;/artifactId&gt; &lt;version&gt;${cxf.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf-rt-ws-security&lt;/artifactId&gt; &lt;version&gt;${cxf.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;xml-security&lt;/groupId&gt; &lt;artifactId&gt;xmlsec&lt;/artifactId&gt; &lt;version&gt;1.3.0&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.ws.security&lt;/groupId&gt; &lt;artifactId&gt;wss4j&lt;/artifactId&gt; &lt;version&gt;1.6.1&lt;/version&gt; &lt;/dependency&gt; </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload