users@glassfish.java.net

Glassfish v2 with DTrace Java API under Solaris Express

From: <glassfish_at_javadesktop.org>
Date: Thu, 19 Apr 2007 10:01:48 PDT

Hey everyone,

I've got a student project for my school using the Java DTrace API.

I've already created a web service with NetBeans 5.5 and Glassfish and it works very well.

After that, I found wsit (tango project) and I wanted to use it because of interoperability with another part of the project in C#.

But in order to use it, I need Glassfish v2 and NetBeans 5.5.1.
Now I've got some troubles with Glassfish v2. I can't run my previous web service.

The web service need a dtrace.jar file in its libraries and I had to add this library in the lib folder of the server too in order to make it work. No trouble with Glassfish v1. But with Glassfish v2 it crashes when I call my webservice :

Here's the code :

[code]
public boolean start() {
        // TODO implement operation
        boolean res=false;
 
        // create a LocalConsumer
        Consumer consumer = new LocalConsumer();
        consumer.addConsumerListener( new ConsumerAdapter() {
            public void dataReceived(DataEvent e) {
                if(e.getProbeData().getEnabledProbeDescription().getProvider().compareTo("mib")==0)
                {
                    System.out.println(e.getProbeData().getEnabledProbeDescription());
                    networkData.addLast(e.getProbeData().getEnabledProbeDescription().toString());
                }
            }
        });
 
    try
    {
        consumer.open();
        consumer.compile(new File("/Documents/DTraceWSApplication/prog.d"));
        consumer.enable();
        consumer.go();
        res=true;
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
        
        return res;
    }
[/code]


And the error when I call the start() method :

[code]
java.lang.reflect.InvocationTargetException
        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 com.sun.enterprise.webservice.InvokerImpl.invoke(InvokerImpl.java:68)
        at com.sun.enterprise.webservice.EjbInvokerImpl.invoke(EjbInvokerImpl.java:75)
        at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:132)
        at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:241)
        at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:75)
        at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:559)
        at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:518)
        at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:503)
        at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:400)
        at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:70)
        at com.sun.enterprise.webservice.MonitoringPipe.process(MonitoringPipe.java:133)
        at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:79)
        at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:559)
        at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:518)
        at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:503)
        at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:400)
        at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:70)
        at com.sun.xml.ws.mex.server.MetadataServerPipe.process(MetadataServerPipe.java:97)
        at com.sun.enterprise.webservice.CommonServerSecurityPipe.processRequest(CommonServerSecurityPipe.java:191)
        at com.sun.enterprise.webservice.CommonServerSecurityPipe.process(CommonServerSecurityPipe.java:113)
        at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:79)
        at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:559)
        at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:518)
        at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:503)
        at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:400)
        at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:208)
        at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:374)
        at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:175)
        at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:134)
        at com.sun.enterprise.webservice.Ejb3MessageDispatcher.handlePost(Ejb3MessageDispatcher.java:100)
        at com.sun.enterprise.webservice.Ejb3MessageDispatcher.invoke(Ejb3MessageDispatcher.java:74)
        at com.sun.enterprise.webservice.EjbWebServiceServlet.dispatchToEjbEndpoint(EjbWebServiceServlet.java:187)
        at com.sun.enterprise.webservice.EjbWebServiceServlet.service(EjbWebServiceServlet.java:116)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at com.sun.enterprise.web.AdHocContextValve.invoke(AdHocContextValve.java:101)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:611)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:564)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:558)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:74)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:207)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:611)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:564)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:558)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1067)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:137)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:611)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:564)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:558)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1067)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:249)
        at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:618)
        at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:549)
        at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:790)
        at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:326)
        at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:248)
        at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:199)
        at com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(PortUnificationPipeline.java:328)
        at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252)
        at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:93)
Caused by: javax.ejb.EJBException
        at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:3813)
        at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:3713)
        at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:3515)
        at com.sun.ejb.containers.WebServiceInvocationHandler.invoke(WebServiceInvocationHandler.java:187)
        at $Proxy65.start(Unknown Source)
        ... 63 more
Caused by: java.lang.UnsatisfiedLinkError: Unable to find libdtrace_jni.so.1
        at org.opensolaris.os.dtrace.Utility.loadLibrary(Utility.java:54)
        at org.opensolaris.os.dtrace.Utility.loadLibrary(Utility.java:80)
        at org.opensolaris.os.dtrace.LocalConsumer.<clinit>(LocalConsumer.java:73)
        at FDLC.DTraceWS.start(DTraceWS.java:38)
        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 com.sun.enterprise.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1051)
        at com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:165)
        at com.sun.ejb.containers.BaseContainer.invokeTargetBeanMethod(BaseContainer.java:2846)
        at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:3930)
        at com.sun.ejb.containers.WebServiceInvocationHandler.invoke(WebServiceInvocationHandler.java:176)
        ... 64 more
[/code]


Okey, it can't find the ressource libdtrace_jni.so.1 ... but why ??? Glassfish v1 can find it but Glassfish v2 not! It's under /usr/lib/.

I've already tried to change the rights on th file but nothing has worked.

What must I do with Glassfish v2 to make it load this library ?

Thanks in advance
[Message sent by forum member 'cydrike' (cydrike)]

http://forums.java.net/jive/thread.jspa?messageID=213228