The "checkActions" error means that the actions that were recorded by WSS4J
when processing the inbound message do not match what you have configured.

Colm.

On Tue, Oct 30, 2012 at 2:04 AM, Gary Gregory <[email protected]>wrote:

> Hi All,
>
> In order to sort things out between our test code and server, I am testing
> our server with SOAP UI and telling it to remove SOAPAction headers. That
> passes by CXF and gets into our custom interceptors where I can pick up the
> what the SOAP action used to mean based on the name of an XML element. Our
> interceptor used to look for the SOAP Action header, now it does not. I am
> now running into a different issue:
>
> 2012-10-29 22:02:44,198 [qtp1840304693-21 - /lde/] WARN : Interceptor for {
>
> http://soap.comm.server.appinterface.seagullsw.com/}LdeWebServiceProviderServicehas
> thrown exception, unwinding now
> org.apache.cxf.binding.soap.SoapFault: An error was discovered processing
> the <wsse:Security> header
>     at
>
> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.createSoapFault(WSS4JInInterceptor.java:797)
>     at
>
> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:354)
>     at
>
> com.seagullsw.appinterface.server.comm.soap.SoapServletCxf$OurWSS4JInInterceptor.handleMessage(SoapServletCxf.java:790)
>     at
>
> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:94)
>     at
>
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
>     at
>
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>     at
>
> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:238)
>     at
>
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:222)
>     at
>
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:202)
>     at
>
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137)
>     at
>
> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:158)
>     at
>
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:239)
>     at
>
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:159)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
>     at
>
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:215)
>     at
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:648)
>     at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
>     at
>
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1072)
>     at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:382)
>     at
>
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1006)
>     at
>
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
>     at
>
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
>     at
>
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
>     at org.eclipse.jetty.server.Server.handle(Server.java:361)
>     at
>
> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485)
>     at
>
> org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:937)
>     at
>
> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:998)
>     at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:856)
>     at
> org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
>     at
>
> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
>     at
>
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:627)
>     at
>
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:51)
>     at
>
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
>     at
>
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
>     at java.lang.Thread.run(Unknown Source)
> Caused by: org.apache.ws.security.WSSecurityException: An error was
> discovered processing the <wsse:Security> header
>     at
>
> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.checkActions(WSS4JInInterceptor.java:380)
>     at
>
> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:330)
>     ... 33 more
>
> Based on previous messages, is this because CXF does not know about the
> WSDL?
>
> Is seeing the reverse domain parts ("
> soap.comm.server.appinterface.seagullsw.com") the usual hint for this
> issue?
>
> Then there is still how to get JaxWsDynamicClientFactory to behave; unless
> you advise I just remove SOAP actions from the WSDL?
>
> Thank you!
> Gary
>
> On Mon, Oct 29, 2012 at 6:29 PM, Gary Gregory <[email protected]
> >wrote:
>
> > Am I hearing different approaches here?
> >
> > (1) Don't send SOAPAction. I'm still not sure how to tell
> > JaxWsDynamicClientFactory how to do that. There is no other way than to
> > strip the header from an interceptor.
> >
> > (2) Remove SOAP actions from WSDL and JaxWsDynamicClientFactory will not
> > create the header. When I do that XMLSpy complains about the WSDL and at
> > runtime, I get some other misbehavior, like the creds are always
> rejected.
> > I'd just hacked that quickly so I am not sure of the details.
> >
> > (3) Send SOAPAction but it must be matched on the server with a CXF
> config
> > file that points to WSDLs?
> >
> > Thank you for your help,
> > Gary
> >
> >
> > On Mon, Oct 29, 2012 at 5:00 PM, Glen Mazza <[email protected]> wrote:
> >
> >> You can provide the WSDL to use via the wsdlLocation attribute in the
> CXF
> >> configuration file:
> >> http://www.jroller.com/gmazza/**entry/web_service_tutorial#**WFstep6<
> http://www.jroller.com/gmazza/entry/web_service_tutorial#WFstep6>
> >>
> >> Glen
> >>
> >>
> >> On 10/29/2012 04:49 PM, Daniel Kulp wrote:
> >>
> >>> This may be on the service side:
> >>>
> >>> INFO : Creating Service {http://soap.comm.server.**
> >>> appinterface.seagullsw.com/}**LdeWebServiceProviderService<
> http://soap.comm.server.appinterface.seagullsw.com/%7DLdeWebServiceProviderService>from
> class com.seagullsw.appinterface.
> >>> **server.comm.soap.**SoapServletCxf$**LdeWebServiceProvider
> >>>
> >>>
> >>> Looks like the server side isn't using the WSDL and thus may not have
> >>> the proper Actions available for it.
> >>>
> >>> Dan
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> On Oct 29, 2012, at 4:01 PM, Gary Gregory <[email protected]>
> >>> wrote:
> >>>
> >>>  Hi All:
> >>>>
> >>>> I am updating our app server to 2.7.0 from 2.6.0 and our WSS tests are
> >>>> failing. All the other tests are OK. I'm not sure if this is something
> >>>> we've gotten away with in the past with our pile of custom
> interceptors
> >>>> or
> >>>> if this is an incompatibility. It would be very difficult for me to
> >>>> extract
> >>>> a standalone test based on our code so I am taking a short cut to see
> if
> >>>> this will ring an obvious bell with someone.
> >>>>
> >>>> The test looks like this:
> >>>>
> >>>>     @Test
> >>>>     public void testWssNamePwd() throws Exception {
> >>>>         final URL wsdl =
> >>>> ClassLoader.getSystemResource(**this.getConfigResource() +
> >>>> "/functions/TestBackEndWss.**wsdl");
> >>>>         final Client client =
> >>>> JaxWsDynamicClientFactory.**newInstance().createClient(**
> >>>> wsdl.toExternalForm());
> >>>>         final Map<String, Object> outProps = new HashMap<String,
> >>>> Object>();
> >>>>         outProps.put(**WSHandlerConstants.ACTION,
> >>>> WSHandlerConstants.USERNAME_**TOKEN);
> >>>>         outProps.put(**WSHandlerConstants.PASSWORD_**TYPE,
> >>>> WSConstants.PW_TEXT);
> >>>>         outProps.put(**WSHandlerConstants.USER,
> >>>> AisTestBackEnd.USER_NAME);
> >>>>         outProps.put(**WSHandlerConstants.PW_**CALLBACK_REF, new
> >>>> CallbackHandler() {
> >>>>             @Override
> >>>>             public void handle(final Callback[] callbacks) {
> >>>>                 final WSPasswordCallback callback =
> (WSPasswordCallback)
> >>>> callbacks[0];
> >>>>                 callback.setPassword(**AisTestBackEnd.PASSWORD);
> >>>>             }
> >>>>         });
> >>>>         client.getOutInterceptors().**add(new
> >>>> WSS4JOutInterceptor(outProps))**;
> >>>>         final String ARG_VALUE = "string arg value";
> >>>>         Object[] results =
> >>>> client.invoke(AisTestBackEnd.**ONESTRINGARGWSS_USERNAMETOKEN_**
> >>>> FUNCTION_NAME,
> >>>> new Object[] { ARG_VALUE });
> >>>>         Assert.assertNotNull(results);
> >>>>         Assert.assertNotNull(results[**0]);
> >>>>         Assert.assertTrue(((String) results[0]).indexOf(ARG_VALUE) >
> 0);
> >>>>         //more asserts...
> >>>>
> >>>> This is the exception I see:
> >>>>
> >>>> 2012-10-29 15:04:40,656 [qtp563831333-20 - /lde/] WARN : Interceptor
> >>>> for {
> >>>> http://soap.comm.server.**appinterface.seagullsw.com/}**
> >>>> LdeWebServiceProviderService#{**http://soap.comm.server.**
> >>>> appinterface.seagullsw.com/}**invokehas<
> http://soap.comm.server.appinterface.seagullsw.com/%7DLdeWebServiceProviderService#%7Bhttp://soap.comm.server.appinterface.seagullsw.com/%7Dinvokehas
> >
> >>>> thrown exception, unwinding now
> >>>> org.apache.cxf.interceptor.**Fault: The given SOAPAction
> >>>> test.**oneStringArgWssUsernameToken does not match an operation.
> >>>>     at
> >>>> org.apache.cxf.binding.soap.**interceptor.**SoapActionInInterceptor$**
> >>>> SoapActionInAttemptTwoIntercep**tor.handleMessage(**
> >>>> SoapActionInInterceptor.java:**188)
> >>>>     at
> >>>> org.apache.cxf.binding.soap.**interceptor.**SoapActionInInterceptor$**
> >>>> SoapActionInAttemptTwoIntercep**tor.handleMessage(**
> >>>> SoapActionInInterceptor.java:**162)
> >>>>     at
> >>>> org.apache.cxf.phase.**PhaseInterceptorChain.**doIntercept(**
> >>>> PhaseInterceptorChain.java:**271)
> >>>>     at
> >>>> org.apache.cxf.transport.**ChainInitiationObserver.**onMessage(**
> >>>> ChainInitiationObserver.java:**121)
> >>>>     at
> >>>> org.apache.cxf.transport.http.**AbstractHTTPDestination.**invoke(**
> >>>> AbstractHTTPDestination.java:**238)
> >>>>     at
> >>>> org.apache.cxf.transport.**servlet.ServletController.**
> >>>> invokeDestination(**ServletController.java:222)
> >>>>     at
> >>>> org.apache.cxf.transport.**servlet.ServletController.**
> >>>> invoke(ServletController.java:**202)
> >>>>     at
> >>>> org.apache.cxf.transport.**servlet.ServletController.**
> >>>> invoke(ServletController.java:**137)
> >>>>     at
> >>>> org.apache.cxf.transport.**servlet.CXFNonSpringServlet.**
> >>>> invoke(CXFNonSpringServlet.**java:158)
> >>>>     at
> >>>>
> org.apache.cxf.transport.**servlet.AbstractHTTPServlet.**handleRequest(
> >>>> **AbstractHTTPServlet.java:239)
> >>>>     at
> >>>> org.apache.cxf.transport.**servlet.AbstractHTTPServlet.**
> >>>> doPost(AbstractHTTPServlet.**java:159)
> >>>>     at
> javax.servlet.http.**HttpServlet.service(**HttpServlet.java:754)
> >>>>     at
> >>>> org.apache.cxf.transport.**servlet.AbstractHTTPServlet.**
> >>>> service(AbstractHTTPServlet.**java:215)
> >>>>     at
> >>>> org.eclipse.jetty.servlet.**ServletHolder.handle(**
> >>>> ServletHolder.java:648)
> >>>>     at
> >>>> org.eclipse.jetty.servlet.**ServletHandler.doHandle(**
> >>>> ServletHandler.java:455)
> >>>>     at
> >>>> org.eclipse.jetty.server.**handler.ContextHandler.**
> >>>> doHandle(ContextHandler.java:**1072)
> >>>>     at
> >>>> org.eclipse.jetty.servlet.**ServletHandler.doScope(**
> >>>> ServletHandler.java:382)
> >>>>     at
> >>>> org.eclipse.jetty.server.**handler.ContextHandler.**
> >>>> doScope(ContextHandler.java:**1006)
> >>>>     at
> >>>> org.eclipse.jetty.server.**handler.ScopedHandler.handle(**
> >>>> ScopedHandler.java:135)
> >>>>     at
> >>>>
> org.eclipse.jetty.server.**handler.**ContextHandlerCollection.**handle(
> >>>> **ContextHandlerCollection.java:**255)
> >>>>     at
> >>>> org.eclipse.jetty.server.**handler.HandlerWrapper.handle(**
> >>>> HandlerWrapper.java:116)
> >>>>     at org.eclipse.jetty.server.**Server.handle(Server.java:361)
> >>>>     at
> >>>> org.eclipse.jetty.server.**AbstractHttpConnection.**handleRequest(**
> >>>> AbstractHttpConnection.java:**485)
> >>>>     at
> >>>> org.eclipse.jetty.server.**AbstractHttpConnection.**content(**
> >>>> AbstractHttpConnection.java:**937)
> >>>>     at
> >>>> org.eclipse.jetty.server.**AbstractHttpConnection$**
> >>>> RequestHandler.content(**AbstractHttpConnection.java:**998)
> >>>>     at org.eclipse.jetty.http.**HttpParser.parseNext(**
> >>>> HttpParser.java:856)
> >>>>     at org.eclipse.jetty.http.**HttpParser.parseAvailable(**
> >>>> HttpParser.java:240)
> >>>>     at
> >>>> org.eclipse.jetty.server.**AsyncHttpConnection.handle(**
> >>>> AsyncHttpConnection.java:82)
> >>>>     at
> >>>> org.eclipse.jetty.io.nio.**SelectChannelEndPoint.handle(**
> >>>> SelectChannelEndPoint.java:**627)
> >>>>     at
> >>>> org.eclipse.jetty.io.nio.**SelectChannelEndPoint$1.run(**
> >>>> SelectChannelEndPoint.java:51)
> >>>>     at
> >>>> org.eclipse.jetty.util.thread.**QueuedThreadPool.runJob(**
> >>>> QueuedThreadPool.java:608)
> >>>>     at
> >>>> org.eclipse.jetty.util.thread.**QueuedThreadPool$3.run(**
> >>>> QueuedThreadPool.java:543)
> >>>>     at java.lang.Thread.run(Unknown Source)
> >>>>
> >>>> The debug log which includes CXF, Jetty and our own logging is here:
> >>>> http://pastebin.com/LXb9vjQD
> >>>>
> >>>> The WSDL is here: http://pastebin.com/y12erjaw
> >>>>
> >>>> Thank you in advance for any guidance you can give me in figuring this
> >>>> out.
> >>>>
> >>>> Gary
> >>>>
> >>>> --
> >>>> E-Mail: [email protected] | [email protected]
> >>>> JUnit in Action, 2nd Ed: <http://goog_1249600977>http:/**/
> bit.ly/ECvg0<http://bit.ly/ECvg0>
> >>>> Spring Batch in Action: <http://s.apache.org/HOq>http:**//
> bit.ly/bqpbCK<http://bit.ly/bqpbCK>
> >>>> Blog: http://garygregory.wordpress.**com<
> http://garygregory.wordpress.com>
> >>>> Home: http://garygregory.com/
> >>>> Tweet! http://twitter.com/GaryGregory
> >>>>
> >>>
> >>
> >> --
> >> Glen Mazza
> >> Talend Community Coders - coders.talend.com
> >> blog: www.jroller.com/gmazza
> >>
> >>
> >
> >
> > --
> > E-Mail: [email protected] | [email protected]
> > JUnit in Action, 2nd Ed: <http://goog_1249600977>http://bit.ly/ECvg0
> > Spring Batch in Action: <http://s.apache.org/HOq>http://bit.ly/bqpbCK
> >
> > Blog: http://garygregory.wordpress.com
> > Home: http://garygregory.com/
> > Tweet! http://twitter.com/GaryGregory
> >
>
>
>
> --
> E-Mail: [email protected] | [email protected]
> JUnit in Action, 2nd Ed: <http://goog_1249600977>http://bit.ly/ECvg0
> Spring Batch in Action: <http://s.apache.org/HOq>http://bit.ly/bqpbCK
> Blog: http://garygregory.wordpress.com
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory
>



-- 
Colm O hEigeartaigh

Talend Community Coder
http://coders.talend.com

Reply via email to