Re: Axis2 Namespace lookup error throw when I access the MessageContext in handler on client service request (JAXB RI databinding)

2008-01-09 Thread patc


Hi there

I think this issue is caused by the following bug (in the JAXB RI generated
stub code):
https://issues.apache.org/jira/browse/AXIS2-3232?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Going to try the suggested code workaround, and will close if it fixes
problem

Pat



patc wrote:
> 
> 
> 
> Hi there
> 
> I have encountered a problem when accessing the MessageContext on a client
> request handler.  What I am attempting to do is log the payload when the
> client makes a service request.  The client is an Axis2 stub, generated by
> the WSDLtoJava utility with JAXB RI as the databinding.
> 
> The client request works fine (reaches endpoint) when my custom module is
> not engaged.  The problem occurs when I add my own custom handler which
> just logs the payload:
> 
> public class ProcessRequestHandler extends AbstractHandler implements
> Handler {
> ….
> public InvocationResponse invoke(MessageContext msgContext) throws
> AxisFault {
>   System.out.println("Payload " + msgContext.getEnvelope().toString());   
> 
> return InvocationResponse.CONTINUE;
> }
> }
> 
> The client_axis2.xml configures the handler as follows:
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>
> 
> 
> When the client makes a request with the custom module engaged, the
> following error occurs:
> 
> com.fineos.ta.test.functests.AnyTest.AnyTest_0001java.lang.RuntimeException:
> Element namespace from data source is
> http://servicetypes.garageservices.test.ta.fineos.com, not the expected 
>   at
> org.apache.axiom.om.impl.llom.OMSourcedElementImpl.forceExpand(OMSourcedElementImpl.java:184)
>   at
> org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize(OMSourcedElementImpl.java:568)
>   at
> org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:772)
>   at
> org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:756)
>   at
> org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:210)
>   at
> org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:756)
>   at
> org.apache.axiom.om.impl.llom.OMNodeImpl.serialize(OMNodeImpl.java:345)
>   at
> org.apache.axiom.om.impl.llom.OMElementImpl.toString(OMElementImpl.java:913)
>   at
> com.fineos.ta.test.garageservices.handlers.ProcessRequestHandler.invoke(ProcessRequestHandler.java:54)
>   at org.apache.axis2.engine.Phase.invoke(Phase.java:292)
>   at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:212)
>   at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:377)
>   at
> org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:374)
>   at
> org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)
>   at
> org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
>   at
> com.fineos.ta.test.garageservices.soap.GarageServicesStub.createGarageCompany(GarageServicesStub.java:174)
> 
> I had a look at the Axiom 1.2.5 source and found the following method in
> org.apache.axiom.om.impl.llom.OMSourceElementImpl, which throws the
> exception:
> 
> private void forceExpand() {
>   …
>   …
> String readerURI = readerFromDS.getNamespaceURI();
> readerURI = (readerURI == null) ? "" : readerURI;
> String uri = getNamespace().getNamespaceURI();
> if (!readerURI.equals(uri)) {
> log.error("forceExpand: expected element namespace " +
> getLocalName() + ", found " + uri);
> throw new RuntimeException("Element namespace from data
> source is " +
> readerURI + ", not the expected " + uri);
> }
> }
> 
> The above code segment would suggest namespace lookups are not working
> correctly.  I did think maybe it was my namespaces in the WSDL or the JAXB
> RI binding types were the problem, but if my namespaces were incorrect, I
> would not expect the normal (non custom handler) client invocation to
> succeed.
> 
> From debugging the code I have found that the above method only gets
> called when my custom handler is configured on.  I guess my real question
> is why when I access the MessageContext in a handler does it behave
> differently?  The MessageContext surely gets accessed at some stage in the
> normal (no custom handler) client invocation, so is there something I am
> missing, or am I accessing the MessageContext too early, or am I just
> doing something wrong?  I originally encountered the problem when trying
> to enable WS-Security (using rampart), but the above is the simplest
> scenario I could come up with.
> 
> Any help greatly appreciated…
> 
> Pat
> 

-- 
View this message in context: 
http://www.

Axis2 Namespace lookup error throw when I access the MessageContext in handler on client service request (JAXB RI databinding)

2008-01-08 Thread patc



Hi there

I have encountered a problem when accessing the MessageContext on a client
request handler.  What I am attempting to do is log the payload when the
client makes a service request.  The client is an Axis2 stub, generated by
the WSDLtoJava utility with JAXB RI as the databinding.

The client request works fine (reaches endpoint) when my custom module is
not engaged.  The problem occurs when I add my own custom handler which just
logs the payload:

public class ProcessRequestHandler extends AbstractHandler implements
Handler {
….
public InvocationResponse invoke(MessageContext msgContext) throws
AxisFault {
System.out.println("Payload " + msgContext.getEnvelope().toString());   

return InvocationResponse.CONTINUE;
}
}

The client_axis2.xml configures the handler as follows:









  

 


When the client makes a request with the custom module engaged, the
following error occurs:

com.fineos.ta.test.functests.AnyTest.AnyTest_0001java.lang.RuntimeException:
Element namespace from data source is
http://servicetypes.garageservices.test.ta.fineos.com, not the expected 
at
org.apache.axiom.om.impl.llom.OMSourcedElementImpl.forceExpand(OMSourcedElementImpl.java:184)
at
org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize(OMSourcedElementImpl.java:568)
at
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:772)
at
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:756)
at
org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:210)
at
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:756)
at 
org.apache.axiom.om.impl.llom.OMNodeImpl.serialize(OMNodeImpl.java:345)
at
org.apache.axiom.om.impl.llom.OMElementImpl.toString(OMElementImpl.java:913)
at
com.fineos.ta.test.garageservices.handlers.ProcessRequestHandler.invoke(ProcessRequestHandler.java:54)
at org.apache.axis2.engine.Phase.invoke(Phase.java:292)
at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:212)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:377)
at
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:374)
at
org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)
at
org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
at
com.fineos.ta.test.garageservices.soap.GarageServicesStub.createGarageCompany(GarageServicesStub.java:174)

I had a look at the Axiom 1.2.5 source and found the following method in
org.apache.axiom.om.impl.llom.OMSourceElementImpl, which throws the
exception:

private void forceExpand() {
…
…
String readerURI = readerFromDS.getNamespaceURI();
readerURI = (readerURI == null) ? "" : readerURI;
String uri = getNamespace().getNamespaceURI();
if (!readerURI.equals(uri)) {
log.error("forceExpand: expected element namespace " +
getLocalName() + ", found " + uri);
throw new RuntimeException("Element namespace from data
source is " +
readerURI + ", not the expected " + uri);
}
}

The above code segment would suggest namespace lookups are not working
correctly.  I did think maybe it was my namespaces in the WSDL or the JAXB
RI binding types were the problem, but if my namespaces were incorrect, I
would not expect the normal (non custom handler) client invocation to
succeed.

>From debugging the code I have found that the above method only gets called
when my custom handler is configured on.  I guess my real question is why
when I access the MessageContext in a handler does it behave differently? 
The MessageContext surely gets accessed at some stage in the normal (no
custom handler) client invocation, so is there something I am missing, or am
I accessing the MessageContext too early, or am I just doing something
wrong?  I originally encountered the problem when trying to enable
WS-Security (using rampart), but the above is the simplest scenario I could
come up with.

Any help greatly appreciated…

Pat
-- 
View this message in context: 
http://www.nabble.com/Axis2-Namespace-lookup-error-throw-when-I-access-the-MessageContext-in-handler-on-client-service-request-%28JAXB-RI-databinding%29-tp14697730p14697730.html
Sent from the Axis - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]