2009-05-04 15 views
1

Wir haben die Migration eines unserer Achsen-Webservices durchgeführt, der mit JDK 1.4 und Achse 1.0 erstellt wurde.Axis 1.2 Webservice mit JDK 1.6.0

Wir versuchen, es zu JDK 1.6.0 mit Achse 1.2 zu migrieren, aber ich bekomme die folgende Nullzeigerausnahme.

Derselbe Code funktioniert einwandfrei, sobald Sie zu JDK 1.4 zurückkehren.

Irgendwelche Hilfe? Danke im Voraus.

java.lang.NullPointerException 
    at au.com.michaelpage.placement.model.rdb.dao.StatusDAO.statusAlreadyExists(StatusDAO.java:275) 
    at au.com.michaelpage.placement.model.rdb.dao.StatusDAO.insert(StatusDAO.java:176) 
    at au.com.michaelpage.pseweb.migrator.MigratorManager.processOnlinePlacement(MigratorManager.java:55) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:388) 
    at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:283) 
    at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323) 
    at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) 
    at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) 
    at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) 
    at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453) 
    at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281) 
    at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
    at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3495) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
    at weblogic.security.service.SecurityManager.runAs(Unknown Source) 
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180) 
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086) 
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406) 
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201) 
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173) 

Neue Stapelspur.

(404)Not Found 
    at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744) 
    at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144) 
    at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) 
    at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) 
    at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) 
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165) 
    at org.apache.axis.client.Call.invokeEngine(Call.java:2765) 
    at org.apache.axis.client.Call.invoke(Call.java:2748) 
    at org.apache.axis.client.Call.invoke(Call.java:2424) 
    at org.apache.axis.client.Call.invoke(Call.java:2347) 
    at org.apache.axis.client.Call.invoke(Call.java:1804) 
    at au.com.michaelpage.pseweb.migrator.ws.PseMigratorSoapBindingStub.processOnlinePlacement(PseMigratorSoapBindingStub.java:115) 
    at au.com.michaelpage.pseweb.migrator.MigratorScheduledTask.run(MigratorScheduledTask.java:47) 
    at au.com.michaelpage.pseweb.migrator.MigratorScheduledTask.main(MigratorScheduledTask.java:35) 

Antwort

0

Die Ausnahme sieht aus wie es aus dem Code kommt ist:

au.com.michaelpage.placement.model.rdb.dao.StatusDAO.statusAlreadyExists(StatusDAO.java:275) 

Welche Version von WebLogic verwenden Sie? Die einzige mit JDK 6 zertifizierte Version ist WebLogic 10.3.

Ich kann nicht von der Stack-Trace sagen, aber ich wette, es hat mit Proxy-Generierung und widersprüchliche JAR-Versionen zu tun.

Ich denke, ein Lift und Laden von JDK 1.4 und Achse 1.0 zu JDK 6 und Achse 1.2 ist voller Gefahren. Es hat sich viel verändert. Es ist keine Überraschung, dass Sie in Schwierigkeiten geraten.

+0

Hallo, Vielen Dank für die Antwort. Wir verwenden nur Weblogic 10.3. Währenddessen habe ich kompiliert und die Anwendung neu implementiert und die Stack-Ablaufverfolgung ist jetzt anders. (404) nicht gefunden bei org.apache.axis.transport.http.HTTPSender.readFromSocket (HTTPSender.java:744) Ich veröffentlichte vollständige Stack-Trace oben. Vielen Dank im Voraus. –

0

Sie untersuchen die Ursache der NullPointerException zuerst in der Klasse StatusDAO.java bei Zeile 275. Sehen Sie, warum das Objekt null ist.

Nicht sicher, was könnte die Ursache hier sein, aber ich habe ein ähnliches Problem beim Upgrade auf eine neuere Version von Jibx konfrontiert. Jibx konvertiert XML in ein Java-Objekt und umgekehrt. Wenn eine bestimmte Knotenliste leer ist, wurde sie mit leerer ArrayList festgelegt, aber in neueren Versionen wurde sie auf null gesetzt, was an vielen Stellen zu Nullpointern führt. Indem ich dem Nullpointer folge, gelingt es mir, die Ursache zu finden und zu beheben.

+0

Hallo Bhushan, Danke für die Antwort. Tatsächlich wird die Methode in StatusDAO von einer Methode im MigratorManager aufgerufen. Diese Methode wiederum wird von der eigentlichen Methode aufgerufen, die als Web-Service verfügbar ist. In der Stub, wenn ich einen Haltepunkt setzen und debuggen, konnte ich sehen, eine Ausnahme wird ausgelöst, wenn 'invoke()' Methode von 'org.apache.axis.client.Call' aufgerufen wird. Mein Problem ist der gleiche Code ohne Änderungen funktioniert gut mit JDK 1.4.2, aber nicht mit JDK 1.6.0. Irgendwelche Hilfe? Vielen Dank im Voraus. –