You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Barry Tarlton (JIRA)" <ji...@apache.org> on 2013/03/15 15:06:12 UTC

[jira] [Updated] (AXIS2-5501) Creating ServiceClient with ConfigContext created using createDefaultConfigurationContext() causes NullPointerException

     [ https://issues.apache.org/jira/browse/AXIS2-5501?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Barry Tarlton updated AXIS2-5501:
---------------------------------

    Description: 
Something has changed from 1.5.6 to 1.6.0 in the axis2-transport-http.jar that causes a null pointer exception if you initialize your ServiceClient with an ConfigurationContext that was created by calling ConfigurationContextFactory.createDefaultConfigurationContext().  

Here's the modified sample that shows the behavior:

public class EchoBlockingClient {
    private static EndpointReference targetEPR = new EndpointReference("http://localhost:8080/checkSoap");

    public static void main(String[] args) throws Exception {
        try {
            OMElement payload = ClientUtil.getEchoOMElement();
            Options options = new Options();
            options.setTo(targetEPR);
            options.setAction("urn:echo");

            // create config using defaultConfigurationContext... 
            // this does not initialize the transportOutDescription's sender's transportOut and causes a null pointer
            ConfigurationContext defaultContext= ConfigurationContextFactory.createDefaultConfigurationContext();
            
            
            // this initializes the transportOut.sender.transportOut properly and allows it to work.
            // ConfigurationContext defaultContext= ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);
            
            
            
            //Blocking invocation
            ServiceClient sender = new ServiceClient(defaultContext, null);
            sender.setOptions(options);
            OMElement result = sender.sendReceive(payload);

            System.out.println(result);

        } catch (AxisFault axisFault) {
            axisFault.printStackTrace();
        }
    }



I see the following exception when doing so:

Exception in thread "main" java.lang.NullPointerException
	at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:172)
	at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)


This is because the TransportOutDescription is never set on the CommonHTTPTransportSender.  

If I change the code and use the

ConfigurationContext defaultContext= ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

Then this code works fine.

I can also, just replace the axis2-transport-http-1.6.0.jar with the axis2-transport-http-1.5.6.jar and it will work either way.




  was:
Something has changed from 1.5.6 and 1.6.0 in the axis2-transport-http.jar that causes a null pointer exception if you initialize your ServiceClient with an ConfigurationContext that was created by calling ConfigurationContextFactory.createDefaultConfigurationContext().  

Here's the modified sample that shows the behavior:

public class EchoBlockingClient {
    private static EndpointReference targetEPR = new EndpointReference("http://localhost:8080/checkSoap");

    public static void main(String[] args) throws Exception {
        try {
            OMElement payload = ClientUtil.getEchoOMElement();
            Options options = new Options();
            options.setTo(targetEPR);
            options.setAction("urn:echo");

            // create config using defaultConfigurationContext... 
            // this does not initialize the transportOutDescription's sender's transportOut and causes a null pointer
            ConfigurationContext defaultContext= ConfigurationContextFactory.createDefaultConfigurationContext();
            
            
            // this initializes the transportOut.sender.transportOut properly and allows it to work.
            // ConfigurationContext defaultContext= ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);
            
            
            
            //Blocking invocation
            ServiceClient sender = new ServiceClient(defaultContext, null);
            sender.setOptions(options);
            OMElement result = sender.sendReceive(payload);

            System.out.println(result);

        } catch (AxisFault axisFault) {
            axisFault.printStackTrace();
        }
    }



I see the following exception when doing so:

Exception in thread "main" java.lang.NullPointerException
	at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:172)
	at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)


This is because the TransportOutDescription is never set on the CommonHTTPTransportSender.  

If I change the code and use the

ConfigurationContext defaultContext= ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

Then this code works fine.

I can also, just replace the axis2-transport-http-1.6.0.jar with the axis2-transport-http-1.5.6.jar and it will work either way.




    
> Creating ServiceClient with ConfigContext created using createDefaultConfigurationContext() causes NullPointerException
> -----------------------------------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-5501
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5501
>             Project: Axis2
>          Issue Type: Bug
>          Components: transports
>    Affects Versions: 1.6.0, 1.6.1, 1.6.2
>         Environment: Any.  Testing on Windows 7 with java 1.5.
>            Reporter: Barry Tarlton
>            Priority: Critical
>              Labels: nullpointer, transport
>             Fix For: 1.5.6
>
>
> Something has changed from 1.5.6 to 1.6.0 in the axis2-transport-http.jar that causes a null pointer exception if you initialize your ServiceClient with an ConfigurationContext that was created by calling ConfigurationContextFactory.createDefaultConfigurationContext().  
> Here's the modified sample that shows the behavior:
> public class EchoBlockingClient {
>     private static EndpointReference targetEPR = new EndpointReference("http://localhost:8080/checkSoap");
>     public static void main(String[] args) throws Exception {
>         try {
>             OMElement payload = ClientUtil.getEchoOMElement();
>             Options options = new Options();
>             options.setTo(targetEPR);
>             options.setAction("urn:echo");
>             // create config using defaultConfigurationContext... 
>             // this does not initialize the transportOutDescription's sender's transportOut and causes a null pointer
>             ConfigurationContext defaultContext= ConfigurationContextFactory.createDefaultConfigurationContext();
>             
>             
>             // this initializes the transportOut.sender.transportOut properly and allows it to work.
>             // ConfigurationContext defaultContext= ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);
>             
>             
>             
>             //Blocking invocation
>             ServiceClient sender = new ServiceClient(defaultContext, null);
>             sender.setOptions(options);
>             OMElement result = sender.sendReceive(payload);
>             System.out.println(result);
>         } catch (AxisFault axisFault) {
>             axisFault.printStackTrace();
>         }
>     }
> I see the following exception when doing so:
> Exception in thread "main" java.lang.NullPointerException
> 	at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:172)
> 	at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
> This is because the TransportOutDescription is never set on the CommonHTTPTransportSender.  
> If I change the code and use the
> ConfigurationContext defaultContext= ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);
> Then this code works fine.
> I can also, just replace the axis2-transport-http-1.6.0.jar with the axis2-transport-http-1.5.6.jar and it will work either way.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org