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 <[email protected]> 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