From: <php...@li...> - 2006-06-10 07:48:00
|
I successfully built php-java-bridge_3.0.8.3 on Solaris 10 U1 x86. I'm now trying to deploy it. I have Apache 2.2 + PHP5 on the 'client' end, Sun Java System Web Server 6.1 SP5 on the server end. In my php.ini, I have: extension = java.so [java] java.hosts = "127.0.0.1:80" java.servlet = "/JavaBridge/JavaBridge.phpjavabridge" java.log_level="4" After some tweaks to fix some SJSWS specific issues (ensuring that all directories in the pat to the shared docs directory are 755, changing the ACL to allow PUT), I'm stuck. test.php hangs before it shows the bottom of the page. The WS error log shows an NPE in GlobalRef.get. Here is the whole interaction as logged at WS: [09/Jun/2006:23:10:33] info (21795): for host 127.0.0.1 trying to PUT /JavaBridge/JavaBridge.phpjavabridge, service-j2ee reports: WEB2798: [/JavaBridge] ServletContext.log(): JavaBridge DEBUG: @1a73d30 --> <C v="java.lang.System" p="C" i="136880520" > [09/Jun/2006:23:10:33] info (21795): for host 127.0.0.1 trying to PUT /JavaBridge/JavaBridge.phpjavabridge, service-j2ee reports: WEB2798: [/JavaBridge] ServletContext.log(): JavaBridge DEBUG: @1a73d30 --> </C> [09/Jun/2006:23:10:33] info (21795): for host 127.0.0.1 trying to PUT /JavaBridge/JavaBridge.phpjavabridge, service-j2ee reports: WEB2798: [/JavaBridge] ServletContext.log(): JavaBridge DEBUG: @1a73d30 <-- <O v="1" p="O" i="136880520"/> [09/Jun/2006:23:10:33] info (21795): for host 127.0.0.1 trying to PUT /JavaBridge/JavaBridge.phpjavabridge, service-j2ee reports: WEB2798: [/JavaBridge] ServletContext.log(): JavaBridge DEBUG: @1a73d30 re-directing to port# Pipe:/var/tmp//.php_java_bridgeC3a4CQ [09/Jun/2006:23:10:33] info (21795): for host 127.0.0.1 trying to PUT /JavaBridge/JavaBridge.phpjavabridge, service-j2ee reports: WEB2798: [/JavaBridge] ServletContext.log(): JavaBridge DEBUG: @1a73d30 --> <I v="1" m="getProperties" p="I" i="136886208" > [09/Jun/2006:23:10:33] info (21795): for host 127.0.0.1 trying to PUT /JavaBridge/JavaBridge.phpjavabridge, service-j2ee reports: WEB2798: [/JavaBridge] ServletContext.log(): JavaBridge ERROR: An exception occured [09/Jun/2006:23:10:33] failure (21795): for host 127.0.0.1 trying to PUT /JavaBridge/JavaBridge.phpjavabridge, service-j2ee reports: WEB2798: [/JavaBridge] ServletContext.log(): java.lang.NullPointerException at php.java.bridge.GlobalRef.get(GlobalRef.java:30) at php.java.bridge.Request.getGlobalRef(Request.java:88) at php.java.bridge.Request.begin(Request.java:352) at php.java.bridge.Parser.CALL_BEGIN(Parser.java:95) at php.java.bridge.Parser.parse(Parser.java:156) at php.java.bridge.Request.handleRequest(Request.java:460) at php.java.bridge.Request.handleRequests(Request.java:493) at php.java.servlet.PhpJavaServlet.handleSocketConnection(PhpJavaServlet.java:213) at php.java.servlet.PhpJavaServlet.doPut(PhpJavaServlet.java:260) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at javax.servlet.http.HttpServlet.service(HttpServlet.java:908) at org.apache.catalina.core.StandardWrapperValve.invokeServletService(StandardWrapperValve.java:771) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:322) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:509) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:212) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:509) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:209) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:509) at com.iplanet.ias.web.connector.nsapi.NSAPIProcessor.process(NSAPIProcessor.java:161) at com.iplanet.ias.web.WebContainer.service(WebContainer.java:580) 30 seconds later, Apache reports: [Fri Jun 09 23:11:03 2006] [notice] child pid 21735 exit signal Segmentation fault (11) Any idea what could be happening here? I'm trying to interpret the trace from the WS error file - extracting the relevant stuff, it says: # $v = new JavaClass("java.lang.System"); <C v="java.lang.System" p="C" i="136880520" > </C> <O v="1" p="O" i="136880520"/> re-directing to port# Pipe:/var/tmp//.php_java_bridgeC3a4CQ # $v->getProperties() <I v="1" m="getProperties" p="I" i="136886208" > So the first method invocation returns an object reference '1', which is then used in the second invocation, but, by then, this object doesn't seem to exist. I can see the redirection to the named pipe in between the two calls, but, from the stack trace, the client doesn't seem to be following the redirect - it's just doing another PUT. It looks like the client should be setting the X_JAVABRIDGE_OVERRIDE_HOSTS header to override the redirect, but, for some reason, it doesn't, so the server doesn't know to preserve the context in the second PUT. Does this all make sense? Any suggestions on tracking this down further? Cheers, Pat -- ------------------------------------------------------------------------ Pat Patterson <mailto:pat...@su...> Federation Architect Superpatterns <http://blogs.sun.com/roller/page/superpat> blog, Planet Identity <http://planetidentity.org> Identity Management Products <http://www.sun.com/identity> /Sun Microsystems, Inc. <http://www.sun.com/>/ ------------------------------------------------------------------------ |