axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ekbote, Niranjan" <NEkb...@doubleclick.net>
Subject RE: Axis / JNI once more
Date Mon, 07 Jul 2003 14:44:37 GMT
I do not think Axis has anything to do with JNI not working. I am using JNI
with Axis 1.1 to call methods on ActiveX objects on Win2k machine and it all
works fine. The only steps I followed was register my ActiveX DLL. Then have
C wrapper DLL around the ActiveX object, which is loaded in Java using
System.loadLibrary(...). And it works fine. Of course, this is all Windows,
but I would imagine it should work similarly on Unix/Linux. 
 
Thanks! 
 
-- Niranjan. 
 

-----Original Message-----
From: Harald Pollak [mailto:h.pollak@pke.at]
Sent: Monday, July 07, 2003 10:39 AM
To: Axis-Dev
Subject: Re: Axis / JNI once more


Yes, all dependent libs are in the path.  
The System.loadlibrary function works well, but the native function call
doesn't work.

So more I try, I more and more believe that it will never work. 

harry


On Mit, 2003-07-02 at 18:55, Sanjiva Weerawarana wrote: 

You're probably missing some dependent libraries? Try using

"ldd" to see what the dependencies are and whether they

are on your java.lib.path too.



Sanjiva.



----- Original Message -----

From: "Harald Pollak" <h.pollak@pke.at>

To: "Axis-Dev" <axis-dev@ws.apache.org>

Sent: Tuesday, July 01, 2003 3:58 PM

Subject: RE: Axis / JNI once more





> I tried to do this, and i got :

>

> init Class

> * Native library 'JNIDate' loaded

> Constructor

> call method: SMS.JNIDate@17cfd38 : 10.146.3.42:1800

> now

>

/usr/lib/j2sdk1.4.2/jre/lib/i386/client:/usr/lib/j2sdk1.4.2/jre/lib/i386:/us

r/lib/j2sdk1.4.2/jre/../lib/i386

> java.lang.UnsatisfiedLinkError: getJNIDate

>         at SMS.JNIDate.getJNIDate(Native Method)

>         at SMS.JNIDate.getDate(JNIDate.java:31)

>         at

> SMS.ServicesSoapBindingImpl.getDate(ServicesSoapBindingImpl.java:23)

>         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:324)

>         at

>

org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:402

)

>         at

>

org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:3

09)

>         at

> org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:333)

>         at

>

org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:

71)

>         at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:150)

>         at org.apache.axis.SimpleChain.invoke(SimpleChain.java:120)

>         at

> org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:481)

>         at org.apache.axis.server.AxisServer.invoke(AxisServer.java:323)

>         at

>

org.apache.axis.transport.http.AxisServlet.invokeEndpointFromGet(AxisServlet

.java:544)

>         at

>

org.apache.axis.transport.http.AxisServlet.processMethodRequest(AxisServlet.

java:466)

>         at

> org.apache.axis.transport.http.AxisServlet.doGet(AxisServlet.java:294)

>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)

>         at

>

org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:

339)

>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

>         at

>

org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application

FilterChain.java:286)

>         at

>

org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh

ain.java:206)

>         at

>

org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja

va:256)

>         at

>

org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex

t.java:151)

>         at

>

org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:562)

>         at

> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:974)

>         at

>

org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja

va:205)

>         at

>

org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex

t.java:151)

>         at

>

org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:562)

>         at

> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:974)

>         at

>

org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:177

)

>         at

>

org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex

t.java:151)

>         at

>

org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.

java:171)

>         at

>

org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex

t.java:149)

>         at

>

org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172

)

>         at

>

org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex

t.java:149)

>         at

>

org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:562)

>         at

> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:974)

>         at

>

org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java

:156)

>         at

>

org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex

t.java:151)

>         at

>

org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:562)

>         at

> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:974)

>         at

> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:203)

>         at

> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:637)

>         at

>

org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConne

ction(Http11Protocol.java:484)

>         at

> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:568)

>         at

>

org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav

a:631)

>         at java.lang.Thread.run(Thread.java:534)

>

>

> So in my oppinion the WS got the library, but it cannot access the

> methode.

>

> I think it's where strange, because this class works in a servlet.

>

> maybe you have an other idea

>

> best regards

> Harry

>

>

> On Die, 2003-07-01 at 11:04, Lilantha Darshana wrote:

>

> > I guess you have to set LD_LIBRARY_PATH environment variable on your

> > platform

> > to pick up the .so from there. and make a call like:

> >

> > static {

> >         try {

> >              System.loadLibrary("JNIDate");

> >              System.out.println("* Native library 'JNIDate' loaded");

> >         }

> >         catch (Throwable e) {

> >             e.printStackTrace();

> >         }

> >     }

> >

> > in your code.

> >

> > -Lilantha

> >

> > -----Original Message-----

> > From: Sanjiva Weerawarana [mailto:sanjiva@watson.ibm.com]

> > Sent: Tuesday, July 01, 2003 2:47 PM

> > To: axis-dev@ws.apache.org

> > Subject: Re: Axis / JNI once more

> >

> >

> > Do you mean that libJNIDate.so is on your java.lib.path directly?

> > Its been a while since I did JNI, but given that you say

> > loadLibrary ("JNIDate") I'm pretty sure that the path should

> > have the directory that that library is in only.

> >

> > Sanjiva.

> >

> > ----- Original Message -----

> > From: "Harald Pollak" <h.pollak@pke.at>

> > To: "Axis-Dev" <axis-dev@ws.apache.org>

> > Sent: Tuesday, July 01, 2003 12:55 PM

> > Subject: Re: Axis / JNI once more

> >

> >

> > > Thanks this was a very good hint, now i know that the library isn't

> > > found.

> > > (java.lang.UnsatisfiedLinkError: getJNIDate)

> > >

> > > But now is stand befor an other problem:

> > > I tried to print out the java.library.path ( got by

> > > System.err.println(AxisProperties.getProperty("java.library.path"));

> > > )

> > >

> > > but my libJNIDate.so is in this path.

> > >

> > > Is there an other path used by axis?

> > >

> > > thanks

> > > harry

> > >

> > >

> > > On Die, 2003-07-01 at 08:24, Sanjiva Weerawarana wrote:

> > >

> > > > Try changing the catch around jd.getDate() to catch (Throwable) ..

> > > > maybe its throwing something you're not catching.

> > > >

> > > > Sanjiva.

> > > >

> > > > ----- Original Message -----

> > > > From: "Harald Pollak" <h.pollak@pke.at>

> > > > To: <axis-dev@ws.apache.org>

> > > > Sent: Monday, June 30, 2003 5:06 PM

> > > > Subject: Axis / JNI once more

> > > >

> > > >

> > > > > Hy everybody!

> > > > >

> > > > > I try to use JNI within a Axis-Service. I try since weeks to bring

it

> > to

> > > > > work, but my result is every time the same:

> > > > >

> > > > > <soapenv:Envelope>

> > > > >     <soapenv:Body>

> > > > >         <soapenv:Fault>

> > > > >             <faultcode>soapenv:Server.userException</faultcode>

> > > > >

> > > > >

<faultstring>java.lang.reflect.InvocationTargetException</faultstring>

> > > > >             <detail/>

> > > > >         </soapenv:Fault>

> > > > >     </soapenv:Body>

> > > > > </soapenv:Envelope>

> > > > >

> > > > > my enviroment:

> > > > > Linux: SuSE 8.2

> > > > > Tomcat 5 ( 5.0.3 Alpha ) ( allso tried with Tomcat 4.1.24 )

> > > > > Axis 1.1 ( final ) ( allso tried with 1.1rc2 )

> > > > > Client: Mozzila 1.4

> > > > >

> > > > > Invocation:

> > > > > I call the function getDate with 2 Parameters via:

> > > > >

> > > > >

> > > >

> >

 
<http://localhost:8080/axis/services/services?method=getDate&in0=10.146.3.42
&>
http://localhost:8080/axis/services/services?method=getDate&in0=10.146.3.42&

> > > > in1=1800

> > > > >

> > > > > The Code:

> > > > > -----------

> > > > >

> > > > > The Implementation:

> > > > >

> > > > > public class ServicesSoapBindingImpl implements SMS.JNIWS{

> > > > >

> > > > >     public java.lang.String getDate(java.lang.String in0, int in1)

> > > > > throws java.rmi.RemoteException {

> > > > >         String s = new String();

> > > > >         System.err.println(LibPath);

> > > > >

> > > > >         try {

> > > > >             System.err.println("init Class");

> > > > >

> > > > >          JNIDate jd = new JNIDate();

> > > > >             System.err.println("call methode: ");

> > > > >             s = jd.getDate(in0, in1);

> > > > >             System.err.println("finnished: " + s);

> > > > >         } catch (Exception ex) {

> > > > >             System.err.println(ex.getStackTrace().toString());

> > > > >          ex.printStackTrace();

> > > > >       }

> > > > >

> > > > >         return s;

> > > > >     }

> > > > >

> > > > >     public java.lang.String getVersion() throws

> > java.rmi.RemoteException

> > > > > {

> > > > >         return "1.0";

> > > > >     }

> > > > >

> > > > >     public java.lang.String getEnv() throws

java.rmi.RemoteException {

> > > > > //        return System.getProperty("java.library.path");

> > > > >         return AxisProperties.getProperty("java.library.path");

> > > > >     }

> > > > >

> > > > > }

> > > > >

> > > > > the Class-JNIDate:

> > > > >

> > > > > class JNIDate {

> > > > >

> > > > >     static { System.loadLibrary("JNIDate"); }

> > > > >

> > > > >     public native String getJNIDate(String Server, int Port );

> > > > >

> > > > >     public String getDate(String Server, int Port) {

> > > > >         String s;

> > > > >         try {

> > > > >            System.err.println("call");

> > > > >            s= getJNIDate(Server,Port);

> > > > >             System.err.println(s);

> > > > >             return s;

> > > > >         } catch (Exception e) {

> > > > >           System.err.println("Exeption!!!!");

> > > > >               e.printStackTrace();

> > > > >             return (String)(e.getMessage() + "\n :

> > > > > "+e.getCause().toString());

> > > > >         }

> > > > >     }

> > > > > }

> > > > >

> > > > >

> > > > > the output on Tomcat-console:

> > > > >     init class

> > > > >     call methode

> > > > >     call

> > > > >

> > > > > there is no  exception in logs or on console

> > > > >

> > > > >

> > > > > when i call the getEnv - Methode:

> > > > >     The path with my library-dir is shown.

> > > > >

> > > > > What i allso tried:

> > > > >     To outcommend the Nativecall and return a simpel string from

> > > > > JNIDate.getJNIDate -> works fine.

> > > > >

> > > > >     To write a servlet using the JNIDate.class and call it. ->

works

> > > > > fine!

> > > > >

> > > > > So my questions:

> > > > >

> > > > > 1.) has anybody allready written a Axis-Service using his own

> > JNI-Class?

> > > > > 2.) has anybody seen a misstake in the upper code ( maybe i'm

> > > > > "codeblinde" - and it's a simple error, so I read over it many

> > times )?

> > > > > 3.) Has anyone a sample - I can try in my enviroment?

> > > > >

> > > > > Thanks

> > > > > Harry

> > > > >

> > > >

> > >

> >

>




Mime
View raw message