I am getting a java.lang.NullPointerException while trying to call a Soap web service with javax.xml.soap.SOAPConnection object.
I am sure the endpointAddress and request parameters are as they should be(i have printed them out). And the stack trace is as follows:
    Caused by: java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java:394)
at java.util.Properties.put(Properties.java:152)
at org.w3c.www.protocol.http.HttpManager.a(SourceFile:561)
at org.w3c.www.protocol.http.HttpManager.getManager(SourceFile:583)
at org.w3c.www.protocol.http.HttpManager.getManager(SourceFile:747)
at org.w3c.www.protocol.http.HttpURLConnection.checkRequest(SourceFile:108)
at org.w3c.www.protocol.http.HttpURLConnection.a(SourceFile:799)
at org.w3c.www.protocol.http.HttpURLConnection.setRequestProperty(SourceFile:778)
at com.sap.security.core.server.https.SecureConnectionFactory.createURLConnection(SecureConnectionFactory.java:999)
at com.sap.security.core.server.https.SecureConnectionFactory.createURLConnection(SecureConnectionFactory.java:891)
at com.sap.engine.httpdsrclient.protocols.https.Handler.openConnection(Handler.java:53)
at java.net.URL.openConnection(URL.java:965)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.createConnection(HttpSOAPConnection.java:669)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.post(HttpSOAPConnection.java:186)
The awkward part of this error is: it works for a while if i restart the application server. It works for a while (about a few hours) and then it starts to getting this error.
Please help me to solve the problem.
The source is as below:
private SOAPMessage callService2(SOAPMessage request, String endpointAddress) throws Exception {
    SOAPConnection connection = null;
    try {
        System.setProperty("sun.net.client.defaultConnectTimeout","300000");
        System.setProperty("sun.rmi.transport.proxy.connectTimeout","300000");
        connection = SOAPConnectionFactory.newInstance().createConnection();
        URL endpointAddressURL = new URL(endpointAddress);
        return connection.call(request, endpointAddressURL);
    }
    catch (Exception e) {
        throw e;
    }
    finally {
        if(connection != null) {
            connection.close();
        }
    }
}
