You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Gary Gregory <ga...@gmail.com> on 2012/10/29 21:01:12 UTC

2.7.0 vs. 2.6.0: org.apache.cxf.interceptor.Fault: The given SOAPAction test.oneStringArgWssUsernameToken does not match an operation.

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
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$SoapActionInAttemptTwoInterceptor.handleMessage(SoapActionInInterceptor.java:188)
    at
org.apache.cxf.binding.soap.interceptor.SoapActionInInterceptor$SoapActionInAttemptTwoInterceptor.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: garydgregory@gmail.com | ggregory@apache.org
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

Re: 2.7.0 vs. 2.6.0: org.apache.cxf.interceptor.Fault: The given SOAPAction test.oneStringArgWssUsernameToken does not match an operation.

Posted by Gary Gregory <ga...@gmail.com>.
On Mon, Oct 29, 2012 at 5:16 PM, Steve Revilak <sr...@kayak.com> wrote:

> This is weird. I don't know where the "**"s come from but they are not in
>> my config, logs or on pastebin where I see "The given SOAPAction
>> test.**oneStringArgWssUsernameToken does not match an operation."
>>
>
> Although this is off topic, I can explain where the stars come from.
>
> Gmail's web interface tends to insert empty <u></u> tags when you
> write multipart/alternative responses to text/plain messages.  You
> won't notice the empty <u></u> tags in the text/html part, but they
> show up as "**" in the text/plain part.
>
> If someone (then) writes a plain text response to your
> multipart/alternative message, you're likely to see stars.
>

Ah, good, so it's not the wine. :p

Gary

>
> Steve
>
>
>
>  The soap:actions in your WSDL seem unusual, I don't think I've seen "a.b"
>>> syntax before:
>>>
>>> 1.
>>>    <operationname="test.****oneStringArgWssUsernameToken">
>>> 2.
>>>    <soap:operationsoapAction="****test.****
>>> oneStringArgWssUsernameToken"/****>
>>>
>>


-- 
E-Mail: garydgregory@gmail.com | ggregory@apache.org
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

Re: 2.7.0 vs. 2.6.0: org.apache.cxf.interceptor.Fault: The given SOAPAction test.oneStringArgWssUsernameToken does not match an operation.

Posted by Steve Revilak <sr...@kayak.com>.
>This is weird. I don't know where the "**"s come from but they are not in
>my config, logs or on pastebin where I see "The given SOAPAction
>test.oneStringArgWssUsernameToken does not match an operation."

Although this is off topic, I can explain where the stars come from.

Gmail's web interface tends to insert empty <u></u> tags when you
write multipart/alternative responses to text/plain messages.  You
won't notice the empty <u></u> tags in the text/html part, but they
show up as "**" in the text/plain part.

If someone (then) writes a plain text response to your
multipart/alternative message, you're likely to see stars.

Steve



>> The soap:actions in your WSDL seem unusual, I don't think I've seen "a.b"
>> syntax before:
>>
>> 1.
>>    <operationname="test.**oneStringArgWssUsernameToken">
>> 2.
>>    <soap:operationsoapAction="**test.**oneStringArgWssUsernameToken"/**>

Re: 2.7.0 vs. 2.6.0: org.apache.cxf.interceptor.Fault: The given SOAPAction test.oneStringArgWssUsernameToken does not match an operation.

Posted by Gary Gregory <ga...@gmail.com>.
Hi Glen,

This is weird. I don't know where the "**"s come from but they are not in
my config, logs or on pastebin where I see "The given SOAPAction
test.oneStringArgWssUsernameToken does not match an operation."

WRT to the "a.b" syntax, yeah it might be weird, but our tests have been
like that for years. I can fix if it's wrong, otherwise I'd rather not
fiddle with our giant pile of tests ;)

Gary

On Mon, Oct 29, 2012 at 4:41 PM, Glen Mazza <gm...@talend.com> wrote:

> The soap:actions in your WSDL seem unusual, I don't think I've seen "a.b"
> syntax before:
>
> 1.
>    <operationname="test.**oneStringArgWssUsernameToken">
> 2.
>    <soap:operationsoapAction="**test.**oneStringArgWssUsernameToken"/**>
> 3.              ...
> 4.
>    <operationname="test.**oneStringArgWssAll">
> 5.
>    <soap:operationsoapAction="**test.oneStringArgWssAll"/>
> 6.              ....
>
>
>
> But anyway, your error message is saying:
>
> **Fault: The given SOAPAction test.****oneStringArgWssUsernameToken does
> not match an operation.
>
> I don't know where those two asterisks between the test. and the
> oneString... are coming from, but that would appear to be the problem, it
> needs to see a SOAPAction of test.**oneStringArgWssUsernameToken instead.
>  Can you confirm with Wireshark ( http://www.jroller.com/gmazza/**
> entry/soap_calls_over_**wireshark<http://www.jroller.com/gmazza/entry/soap_calls_over_wireshark>)
> that you're indeed getting those two asterisks over the wire?
>
> Glen
>
>
> On 10/29/2012 04:28 PM, Gary Gregory wrote:
>
>> Ah! I see, but how do I get JaxWsDynamicClientFactory to behave properly
>> then?
>>
>> Gary
>>
>> On Mon, Oct 29, 2012 at 4:07 PM, Glen Mazza <gm...@talend.com> wrote:
>>
>>  Yes, I believe it's related to some security tightening up done recently:
>>> http://cxf.547215.n5.nabble.****com/CXF-2-6-2-SOAPAction-**
>>> Validation-Behavior-td5713789.****html#a5713800<http://cxf.**
>>> 547215.n5.nabble.com/CXF-2-6-**2-SOAPAction-Validation-**
>>> Behavior-td5713789.html#**a5713800<http://cxf.547215.n5.nabble.com/CXF-2-6-2-SOAPAction-Validation-Behavior-td5713789.html#a5713800>
>>> >
>>>
>>>
>>> Glen
>>>
>>>
>>> On 10/29/2012 04:01 PM, Gary Gregory 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.**appi**nterface.seagullsw.com/}**<http://appinterface.seagullsw.com/%7D**>
>>>> LdeWebServiceProviderService#{****http://soap.comm.server.**
>>>> appinterface.seagullsw.com/}****invokehas<http://appinterface.seagullsw.com/%7D**invokehas>
>>>> <http://soap.comm.**server.appinterface.seagullsw.**com/%**
>>>> 7DLdeWebServiceProviderService**#%7Bhttp://soap.comm.server.**
>>>> appinterface.seagullsw.com/%**7Dinvokehas<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
>>>>
>>>>
>>>>  --
>>> Glen Mazza
>>> Talend Community Coders - coders.talend.com
>>> blog: www.jroller.com/gmazza
>>>
>>>
>>>
>>
>
> --
> Glen Mazza
> Talend Community Coders - coders.talend.com
> blog: www.jroller.com/gmazza
>
>


-- 
E-Mail: garydgregory@gmail.com | ggregory@apache.org
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

Re: 2.7.0 vs. 2.6.0: org.apache.cxf.interceptor.Fault: The given SOAPAction test.oneStringArgWssUsernameToken does not match an operation.

Posted by Glen Mazza <gm...@talend.com>.
The soap:actions in your WSDL seem unusual, I don't think I've seen 
"a.b" syntax before:

 1.
    <operationname="test.oneStringArgWssUsernameToken">
 2.
    <soap:operationsoapAction="test.oneStringArgWssUsernameToken"/>
 3.              ...
 4.
    <operationname="test.oneStringArgWssAll">
 5.
    <soap:operationsoapAction="test.oneStringArgWssAll"/>
 6.              ....



But anyway, your error message is saying:

**Fault: The given SOAPAction test.**oneStringArgWssUsernameToken does not match an operation.

I don't know where those two asterisks between the test. and the 
oneString... are coming from, but that would appear to be the problem, 
it needs to see a SOAPAction of test.oneStringArgWssUsernameToken 
instead.  Can you confirm with Wireshark ( 
http://www.jroller.com/gmazza/entry/soap_calls_over_wireshark) that 
you're indeed getting those two asterisks over the wire?

Glen

On 10/29/2012 04:28 PM, Gary Gregory wrote:
> Ah! I see, but how do I get JaxWsDynamicClientFactory to behave properly
> then?
>
> Gary
>
> On Mon, Oct 29, 2012 at 4:07 PM, Glen Mazza <gm...@talend.com> wrote:
>
>> Yes, I believe it's related to some security tightening up done recently:
>> http://cxf.547215.n5.nabble.**com/CXF-2-6-2-SOAPAction-**
>> Validation-Behavior-td5713789.**html#a5713800<http://cxf.547215.n5.nabble.com/CXF-2-6-2-SOAPAction-Validation-Behavior-td5713789.html#a5713800>
>>
>> Glen
>>
>>
>> On 10/29/2012 04:01 PM, Gary Gregory 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
>>>
>>>
>> --
>> Glen Mazza
>> Talend Community Coders - coders.talend.com
>> blog: www.jroller.com/gmazza
>>
>>
>


-- 
Glen Mazza
Talend Community Coders - coders.talend.com
blog: www.jroller.com/gmazza


Re: 2.7.0 vs. 2.6.0: org.apache.cxf.interceptor.Fault: The given SOAPAction test.oneStringArgWssUsernameToken does not match an operation.

Posted by Gary Gregory <ga...@gmail.com>.
Ah! I see, but how do I get JaxWsDynamicClientFactory to behave properly
then?

Gary

On Mon, Oct 29, 2012 at 4:07 PM, Glen Mazza <gm...@talend.com> wrote:

> Yes, I believe it's related to some security tightening up done recently:
> http://cxf.547215.n5.nabble.**com/CXF-2-6-2-SOAPAction-**
> Validation-Behavior-td5713789.**html#a5713800<http://cxf.547215.n5.nabble.com/CXF-2-6-2-SOAPAction-Validation-Behavior-td5713789.html#a5713800>
>
> Glen
>
>
> On 10/29/2012 04:01 PM, Gary Gregory 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
>>
>>
>
> --
> Glen Mazza
> Talend Community Coders - coders.talend.com
> blog: www.jroller.com/gmazza
>
>


-- 
E-Mail: garydgregory@gmail.com | ggregory@apache.org
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

Re: 2.7.0 vs. 2.6.0: org.apache.cxf.interceptor.Fault: The given SOAPAction test.oneStringArgWssUsernameToken does not match an operation.

Posted by Glen Mazza <gm...@talend.com>.
Yes, I believe it's related to some security tightening up done recently:
http://cxf.547215.n5.nabble.com/CXF-2-6-2-SOAPAction-Validation-Behavior-td5713789.html#a5713800

Glen

On 10/29/2012 04:01 PM, Gary Gregory 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
> 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$SoapActionInAttemptTwoInterceptor.handleMessage(SoapActionInInterceptor.java:188)
>      at
> org.apache.cxf.binding.soap.interceptor.SoapActionInInterceptor$SoapActionInAttemptTwoInterceptor.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
>


-- 
Glen Mazza
Talend Community Coders - coders.talend.com
blog: www.jroller.com/gmazza


Re: 2.7.0 vs. 2.6.0: org.apache.cxf.interceptor.Fault: The given SOAPAction test.oneStringArgWssUsernameToken does not match an operation.

Posted by Gary Gregory <ga...@gmail.com>.
Ah, that I did not know.

Can I do that programmatically? We have a generic SOAP processing servlet
that takes in any SOAP and matches it up with our internal services as well
as others, but there is no code generation of stubs at development time.

Thank you,
Gary

On Mon, Oct 29, 2012 at 5:00 PM, Glen Mazza <gm...@talend.com> 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 <ga...@gmail.com> 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: garydgregory@gmail.com | ggregory@apache.org
>>> 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: garydgregory@gmail.com | ggregory@apache.org
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

Re: 2.7.0 vs. 2.6.0: org.apache.cxf.interceptor.Fault: The given SOAPAction test.oneStringArgWssUsernameToken does not match an operation.

Posted by Gary Gregory <ga...@gmail.com>.
On Tue, Oct 30, 2012 at 11:12 AM, Daniel Kulp <dk...@apache.org> wrote:

>
> On Oct 29, 2012, at 6:29 PM, Gary Gregory <ga...@gmail.com> 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.
>
> If the wsdl has it in it, it should be sent.
>

Roger that.


>
> > (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.
>
> That should work, or at least setting the action to the empty string.
>

As an experiment, I have "<soap:operation soapAction="" />" instead of
nothing and XMLSpy does not complain.


> > (3) Send SOAPAction but it must be matched on the server with a CXF
> config
> > file that points to WSDLs?
>
> You should be able to have action  attributes on the @WebMethod
> annotations that would allow the use of them for the code first scenarios.
>   That said, if the service is represented by a wsdl, you are normally MUCH
> better off to use the actual wsdl on the service side.
>

Roger that. I'll dig in the WSDL on the server side direction.


>
> There is a 4th option:
> You could write a simple interceptor that runs early in the in chain on
> the server side that clears the SOAPAction header.
>

That seems more bullet-proof and easier to provide backward compatibility
for us. The WSDL do not need to be edited and I can log a warning that the
header is removed.

Thank you for your help. It is much appreciated.

Gary


>
>
>
> Dan
>
>
>
> >
> > Thank you for your help,
> > Gary
> >
> > On Mon, Oct 29, 2012 at 5:00 PM, Glen Mazza <gm...@talend.com> 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 <ga...@gmail.com>
> 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: garydgregory@gmail.com | ggregory@apache.org
> >>>> 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: garydgregory@gmail.com | ggregory@apache.org
> > 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
>
> --
> Daniel Kulp
> dkulp@apache.org - http://dankulp.com/blog
> Talend Community Coder - http://coders.talend.com
>
>


-- 
E-Mail: garydgregory@gmail.com | ggregory@apache.org
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

Re: 2.7.0 vs. 2.6.0: org.apache.cxf.interceptor.Fault: The given SOAPAction test.oneStringArgWssUsernameToken does not match an operation.

Posted by Daniel Kulp <dk...@apache.org>.
On Oct 30, 2012, at 12:05 PM, Gary Gregory <ga...@gmail.com> wrote:

> On Tue, Oct 30, 2012 at 11:12 AM, Daniel Kulp <dk...@apache.org> wrote:
> 
>> 
>> On Oct 29, 2012, at 6:29 PM, Gary Gregory <ga...@gmail.com> 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.
>> 
>> If the wsdl has it in it, it should be sent.
>> 
>>> (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.
>> 
>> That should work, or at least setting the action to the empty string.
>> 
>>> (3) Send SOAPAction but it must be matched on the server with a CXF
>> config
>>> file that points to WSDLs?
>> 
>> You should be able to have action  attributes on the @WebMethod
>> annotations that would allow the use of them for the code first scenarios.
>>  That said, if the service is represented by a wsdl, you are normally MUCH
>> better off to use the actual wsdl on the service side.
>> 
> 
> I need a clarification: If I give the service it's WSDL, will I still need
> to strip the SOAPAction header? Shouldn't it get matched up?

If the service has the wsdl with the action defined in it, it should definitely get matched up and the interceptor should not be needed.

Dan



> 
> Thank you,
> Gary
> 
> 
>> 
>> There is a 4th option:
>> You could write a simple interceptor that runs early in the in chain on
>> the server side that clears the SOAPAction header.
>> 
>> 
>> 
>> Dan
>> 
>> 
>> 
>>> 
>>> Thank you for your help,
>>> Gary
>>> 
>>> On Mon, Oct 29, 2012 at 5:00 PM, Glen Mazza <gm...@talend.com> 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 <ga...@gmail.com>
>> 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: garydgregory@gmail.com | ggregory@apache.org
>>>>>> 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: garydgregory@gmail.com | ggregory@apache.org
>>> 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
>> 
>> --
>> Daniel Kulp
>> dkulp@apache.org - http://dankulp.com/blog
>> Talend Community Coder - http://coders.talend.com
>> 
>> 
> 
> 
> -- 
> E-Mail: garydgregory@gmail.com | ggregory@apache.org
> 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

-- 
Daniel Kulp
dkulp@apache.org - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com


Re: 2.7.0 vs. 2.6.0: org.apache.cxf.interceptor.Fault: The given SOAPAction test.oneStringArgWssUsernameToken does not match an operation.

Posted by Gary Gregory <ga...@gmail.com>.
On Tue, Oct 30, 2012 at 11:12 AM, Daniel Kulp <dk...@apache.org> wrote:

>
> On Oct 29, 2012, at 6:29 PM, Gary Gregory <ga...@gmail.com> 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.
>
> If the wsdl has it in it, it should be sent.
>
> > (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.
>
> That should work, or at least setting the action to the empty string.
>
> > (3) Send SOAPAction but it must be matched on the server with a CXF
> config
> > file that points to WSDLs?
>
> You should be able to have action  attributes on the @WebMethod
> annotations that would allow the use of them for the code first scenarios.
>   That said, if the service is represented by a wsdl, you are normally MUCH
> better off to use the actual wsdl on the service side.
>

I need a clarification: If I give the service it's WSDL, will I still need
to strip the SOAPAction header? Shouldn't it get matched up?

Thank you,
Gary


>
> There is a 4th option:
> You could write a simple interceptor that runs early in the in chain on
> the server side that clears the SOAPAction header.
>
>
>
> Dan
>
>
>
> >
> > Thank you for your help,
> > Gary
> >
> > On Mon, Oct 29, 2012 at 5:00 PM, Glen Mazza <gm...@talend.com> 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 <ga...@gmail.com>
> 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: garydgregory@gmail.com | ggregory@apache.org
> >>>> 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: garydgregory@gmail.com | ggregory@apache.org
> > 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
>
> --
> Daniel Kulp
> dkulp@apache.org - http://dankulp.com/blog
> Talend Community Coder - http://coders.talend.com
>
>


-- 
E-Mail: garydgregory@gmail.com | ggregory@apache.org
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

Re: 2.7.0 vs. 2.6.0: org.apache.cxf.interceptor.Fault: The given SOAPAction test.oneStringArgWssUsernameToken does not match an operation.

Posted by Daniel Kulp <dk...@apache.org>.
On Oct 29, 2012, at 6:29 PM, Gary Gregory <ga...@gmail.com> 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.

If the wsdl has it in it, it should be sent.

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

That should work, or at least setting the action to the empty string.

> (3) Send SOAPAction but it must be matched on the server with a CXF config
> file that points to WSDLs?

You should be able to have action  attributes on the @WebMethod annotations that would allow the use of them for the code first scenarios.   That said, if the service is represented by a wsdl, you are normally MUCH better off to use the actual wsdl on the service side.

There is a 4th option:
You could write a simple interceptor that runs early in the in chain on the server side that clears the SOAPAction header.   



Dan



> 
> Thank you for your help,
> Gary
> 
> On Mon, Oct 29, 2012 at 5:00 PM, Glen Mazza <gm...@talend.com> 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 <ga...@gmail.com> 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: garydgregory@gmail.com | ggregory@apache.org
>>>> 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: garydgregory@gmail.com | ggregory@apache.org
> 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

-- 
Daniel Kulp
dkulp@apache.org - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com


Re: 2.7.0 vs. 2.6.0: org.apache.cxf.interceptor.Fault: The given SOAPAction test.oneStringArgWssUsernameToken does not match an operation.

Posted by Colm O hEigeartaigh <co...@apache.org>.
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 <ga...@gmail.com>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 <garydgregory@gmail.com
> >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 <gm...@talend.com> 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 <ga...@gmail.com>
> >>> 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: garydgregory@gmail.com | ggregory@apache.org
> >>>> 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: garydgregory@gmail.com | ggregory@apache.org
> > 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: garydgregory@gmail.com | ggregory@apache.org
> 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

Re: 2.7.0 vs. 2.6.0: org.apache.cxf.interceptor.Fault: The given SOAPAction test.oneStringArgWssUsernameToken does not match an operation.

Posted by Gary Gregory <ga...@gmail.com>.
Hm... I have spring-context on my classpath already... and more Spring
stuff (but I have to use Ivy):

    <dependency org="org.springframework" name="spring-aop"
conf="ais.dist;all" rev="3.0.7.RELEASE" />
    <dependency org="org.springframework" name="spring-asm"
conf="ais.dist;all" rev="3.0.7.RELEASE" />
    <dependency org="org.springframework" name="spring-beans"
conf="ais.dist;all" rev="3.0.7.RELEASE" />
    <dependency org="org.springframework" name="spring-context"
conf="ais.dist;all" rev="3.0.7.RELEASE" />
    <dependency org="org.springframework" name="spring-core"
conf="ais.dist;all" rev="3.0.7.RELEASE" />
    <dependency org="org.springframework" name="spring-expression"
conf="ais.dist;all" rev="3.0.7.RELEASE" />
    <dependency org="org.springframework" name="spring-jms"
conf="ais.dist;all" rev="3.0.7.RELEASE" />
    <dependency org="org.springframework" name="spring-tx"
conf="ais.dist;all" rev="3.0.7.RELEASE" />
    <dependency org="org.springframework" name="spring-web"
conf="ais.dist;all" rev="3.0.7.RELEASE" />

I'll take to keep digging in the AM. Maybe it's a different dependency
issue... I do not have the geronimo jars on my CP...

This is the relevant section of my ivy.xml:

    <!-- CXF 2.7.0 start -->
    <!-- Jetty start -->
    <dependency org="org.eclipse.jetty.aggregate" name="jetty-all"
conf="ais.dist;all" rev="8.1.7.v20120910" />
    <dependency org="org.glassfish" name="javax.servlet"
conf="ais.dist;all" rev="3.0" />
    <dependency org="org.eclipse.jetty" name="jetty-util"
conf="all;ais.client.dist" rev="8.1.7.v20120910" />
    <!-- Jetty end -->
    <!-- JAXB start -->
    <dependency org="javax.xml.bind" name="jaxb-api"
conf="endorsed;jaxb;all" rev="2.2.6">
      <include name="jaxb-api" />
      <exclude name="jsr173_1.0_api" />
    </dependency>
    <dependency org="com.sun.xml.bind" name="jaxb-impl"
conf="ais.dist;jaxb;all" rev="2.2.5" />
    <dependency org="com.sun.xml.bind" name="jaxb-xjc"
conf="ais.dist;jaxb;all" rev="2.2.5" />
    <!-- JAXB end -->
    <dependency org="wsdl4j" name="wsdl4j" conf="ais.dist;all" rev="1.6.2"
/>
    <dependency org="org.apache.ws.security" name="wss4j"
conf="ais.dist;all" rev="1.6.7" />
    <dependency org="org.apache.velocity" name="velocity"
conf="ais.dist;all" rev="1.7" />
    <dependency org="org.apache.ws.xmlschema" name="xmlschema-core"
conf="ais.dist;all" rev="2.0.3" />
    <dependency org="org.apache.neethi" name="neethi" conf="ais.dist;all"
rev="3.0.2" />
    <dependency org="org.codehaus.woodstox" name="woodstox-core-asl"
conf="ais.dist;all" rev="4.1.4" />
    <dependency org="org.codehaus.woodstox" name="stax2-api"
conf="ais.dist;all" rev="3.1.1" />
    <dependency org="org.springframework" name="spring-aop"
conf="ais.dist;all" rev="3.0.7.RELEASE" />
    <dependency org="org.springframework" name="spring-asm"
conf="ais.dist;all" rev="3.0.7.RELEASE" />
    <dependency org="org.springframework" name="spring-beans"
conf="ais.dist;all" rev="3.0.7.RELEASE" />
    <dependency org="org.springframework" name="spring-context"
conf="ais.dist;all" rev="3.0.7.RELEASE" />
    <dependency org="org.springframework" name="spring-core"
conf="ais.dist;all" rev="3.0.7.RELEASE" />
    <dependency org="org.springframework" name="spring-expression"
conf="ais.dist;all" rev="3.0.7.RELEASE" />
    <dependency org="org.springframework" name="spring-jms"
conf="ais.dist;all" rev="3.0.7.RELEASE" />
    <dependency org="org.springframework" name="spring-tx"
conf="ais.dist;all" rev="3.0.7.RELEASE" />
    <dependency org="org.springframework" name="spring-web"
conf="ais.dist;all" rev="3.0.7.RELEASE" />
    <dependency org="com.sun.xml.fastinfoset" name="FastInfoset"
conf="ais.dist;all" rev="1.2.12" />
    <dependency org="org.slf4j" name="slf4j-api" conf="ais.dist;all"
rev="1.6.2" />
    <dependency org="org.slf4j" name="slf4j-log4j12" conf="ais.dist;all"
rev="1.6.2" />
    <dependency org="org.apache.santuario" name="xmlsec"
conf="ais.dist;all" rev="1.5.2" />
    <dependency org="net.sf.ehcache" name="ehcache-core"
conf="ais.dist;all" rev="2.5.2" />
    <!-- CXF 2.7.0 end -->


Gary

On Mon, Oct 29, 2012 at 10:48 PM, Glen Mazza <gm...@talend.com> wrote:

> You're in luck, I just got that oddball "An error was discovered
> processing the <wsse:Security> header" error message about one hour ago.
>  The solution for me was to just add the below Maven dependency to my
> client pom so the client-side Spring configuration which provides
> WS-Security elements would be processed.  (Here's my source code:
> https://github.com/gmazza/**blog-samples/tree/master/cxf_**
> x509_profile_interceptor<https://github.com/gmazza/blog-samples/tree/master/cxf_x509_profile_interceptor>
> )
>
>         <dependency>
>             <groupId>org.springframework</**groupId>
>             <artifactId>spring-context</**artifactId>
>             <version>3.0.7.RELEASE</**version> (or whatever else)
>         </dependency>
>
> Glen
>
>
>
>
> On 10/29/2012 10:04 PM, Gary Gregory 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/}**
>> LdeWebServiceProviderServiceha**s<http://soap.comm.server.appinterface.seagullsw.com/%7DLdeWebServiceProviderServicehas>
>> 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<http://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 <garydgregory@gmail.com
>> >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 <gm...@talend.com> 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>
>>>> <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://appinterface.seagullsw.com/%7D**LdeWebServiceProviderService>
>>>>> <h**ttp://soap.comm.server.**appinterface.seagullsw.com/%**
>>>>> 7DLdeWebServiceProviderService<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 <ga...@gmail.com>
>>>>> 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.**appi**nterface.seagullsw.com/}**<http://appinterface.seagullsw.com/%7D**>
>>>>>> LdeWebServiceProviderService#{****http://soap.comm.server.**
>>>>>> appinterface.seagullsw.com/}****invokehas<http://appinterface.seagullsw.com/%7D**invokehas>
>>>>>> <http://soap.comm.**server.appinterface.seagullsw.**com/%**
>>>>>> 7DLdeWebServiceProviderService**#%7Bhttp://soap.comm.server.**
>>>>>> appinterface.seagullsw.com/%**7Dinvokehas<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: garydgregory@gmail.com | ggregory@apache.org
>>>>>> JUnit in Action, 2nd Ed: <http://goog_1249600977>http:/****/
>>>>>> bit.ly/ECvg0<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 <http://bit.ly/bqpbCK>>
>>>>>> Blog: http://garygregory.wordpress.****com<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: garydgregory@gmail.com | ggregory@apache.org
>>> 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: garydgregory@gmail.com | ggregory@apache.org
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

Re: 2.7.0 vs. 2.6.0: org.apache.cxf.interceptor.Fault: The given SOAPAction test.oneStringArgWssUsernameToken does not match an operation.

Posted by Glen Mazza <gm...@talend.com>.
You're in luck, I just got that oddball "An error was discovered 
processing the <wsse:Security> header" error message about one hour 
ago.  The solution for me was to just add the below Maven dependency to 
my client pom so the client-side Spring configuration which provides 
WS-Security elements would be processed.  (Here's my source code: 
https://github.com/gmazza/blog-samples/tree/master/cxf_x509_profile_interceptor)

         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-context</artifactId>
             <version>3.0.7.RELEASE</version> (or whatever else)
         </dependency>

Glen



On 10/29/2012 10:04 PM, Gary Gregory 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 <ga...@gmail.com>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 <gm...@talend.com> 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 <ga...@gmail.com>
>>>> 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: garydgregory@gmail.com | ggregory@apache.org
>>>>> 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: garydgregory@gmail.com | ggregory@apache.org
>> 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
>>
>
>


-- 
Glen Mazza
Talend Community Coders - coders.talend.com
blog: www.jroller.com/gmazza


Re: 2.7.0 vs. 2.6.0: org.apache.cxf.interceptor.Fault: The given SOAPAction test.oneStringArgWssUsernameToken does not match an operation.

Posted by Gary Gregory <ga...@gmail.com>.
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 <ga...@gmail.com>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 <gm...@talend.com> 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 <ga...@gmail.com>
>>> 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: garydgregory@gmail.com | ggregory@apache.org
>>>> 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: garydgregory@gmail.com | ggregory@apache.org
> 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: garydgregory@gmail.com | ggregory@apache.org
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

Re: 2.7.0 vs. 2.6.0: org.apache.cxf.interceptor.Fault: The given SOAPAction test.oneStringArgWssUsernameToken does not match an operation.

Posted by Gary Gregory <ga...@gmail.com>.
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 <gm...@talend.com> 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 <ga...@gmail.com> 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: garydgregory@gmail.com | ggregory@apache.org
>>> 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: garydgregory@gmail.com | ggregory@apache.org
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

Re: 2.7.0 vs. 2.6.0: org.apache.cxf.interceptor.Fault: The given SOAPAction test.oneStringArgWssUsernameToken does not match an operation.

Posted by Glen Mazza <gm...@talend.com>.
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

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 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 <ga...@gmail.com> 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
>> 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$SoapActionInAttemptTwoInterceptor.handleMessage(SoapActionInInterceptor.java:188)
>>     at
>> org.apache.cxf.binding.soap.interceptor.SoapActionInInterceptor$SoapActionInAttemptTwoInterceptor.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: garydgregory@gmail.com | ggregory@apache.org
>> 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


-- 
Glen Mazza
Talend Community Coders - coders.talend.com
blog: www.jroller.com/gmazza


Re: 2.7.0 vs. 2.6.0: org.apache.cxf.interceptor.Fault: The given SOAPAction test.oneStringArgWssUsernameToken does not match an operation.

Posted by Daniel Kulp <dk...@apache.org>.
This may be on the service side:

INFO : Creating Service {http://soap.comm.server.appinterface.seagullsw.com/}LdeWebServiceProviderService 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 <ga...@gmail.com> 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
> 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$SoapActionInAttemptTwoInterceptor.handleMessage(SoapActionInInterceptor.java:188)
>    at
> org.apache.cxf.binding.soap.interceptor.SoapActionInInterceptor$SoapActionInAttemptTwoInterceptor.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: garydgregory@gmail.com | ggregory@apache.org
> 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

-- 
Daniel Kulp
dkulp@apache.org - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com