You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Harald Pollak <h....@pke.at> on 2003/06/30 13:16:32 UTC
Axis / JNI - need help!
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&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