[
https://issues.apache.org/jira/browse/AXIS2-3219?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13132521#comment-13132521
]
Tammo van Lessen commented on AXIS2-3219:
-----------------------------------------
This issue is still not fixed and is causing NPEs in my real life, so please
re-open this ticket.
Here is what happens:
I'm calling a service via the local transport. The message is passed to
LocalTransportSender, which eventually creates and instance of
LocalTransportReceiver in finalizeSendWithToAddress(...). It passes itself
(i.e. an instance of LocalTransportSender) to the constructor, which sets its
confContext field to the static CONFIG_CONTEXT field, which is always null.
Thus, localTransportReceiver.processMessage is destined to throw a NPE.
The only workaround is to manually set the CONFIG_CONTEXT somewhere before
using the local transport. I'm really wondering how the test case can run
without exposing this NPE.
The fix would be easy IMO by passing the configuration context that can be get
from the msgContext directly to the constructor of LocalTransportReceiver. The
LocalTransportReceiver(LocalTransportSender sender) constructor is currently
useless IMO.
The nicer fix would be probably to add a field for the config context in the
LocalTransportSender and set it in its init(...) method. Then, the
LocalTransportReceiver(LocalTransportSender sender) could use the config
context hold in the sender.
Thanks,
Tammo
> NPE in LocalTransportReceiver.processMessage()
> -----------------------------------------------
>
> Key: AXIS2-3219
> URL: https://issues.apache.org/jira/browse/AXIS2-3219
> Project: Axis2
> Issue Type: Bug
> Components: transports
> Reporter: Alex Boisvert
> Assignee: David Illsley
>
> I tried to invoke a service through the local transport and got:
> java.lang.NullPointerException
> at
> org.apache.axis2.transport.local.LocalTransportReceiver.processMessage(LocalTransportReceiver.java:58)
> at
> org.apache.axis2.transport.local.LocalTransportSender.finalizeSendWithToAddress(LocalTransportSender.java:112)
> at
> org.apache.axis2.transport.local.LocalTransportSender.invoke(LocalTransportSender.java:87)
> at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:396)
> 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
> org.apache.ode.axis2.ExternalService$1$1.call(ExternalService.java:150)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
> at java.util.concurrent.FutureTask.run(FutureTask.java:123)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
> at java.lang.Thread.run(Thread.java:595)
> Looking at the code (trunk r577941),
> public class LocalTransportReceiver {
> public static ConfigurationContext CONFIG_CONTEXT;
> private ConfigurationContext confContext;
> private LocalTransportSender sender;
> public LocalTransportReceiver(ConfigurationContext configContext) {
> confContext = configContext;
> }
> public LocalTransportReceiver(LocalTransportSender sender) {
> this(CONFIG_CONTEXT);
> this.sender = sender;
> }
> // REST OF CLASS NOT INCLUDED
> }
> It doesn't look like CONFIG_CONTEXT is being initalized, and I would expect
> the current ConfigurationContext to be supplied by the LocalTransportSender.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]