thx

i tried to set the classpath, no success.

my fault :

i didn't place the jar with the native call
in any lib-folder :-(


mfg derMark



Ruiz González schrieb:
May be this can help You
http://forum.java.sun.com/thread.jspa?threadID=780109


José de Jesús Ruíz González
Desarrollo de Aplicaciones Comerciales
México Asistencia
Insurgentes Sur No. 1685
01020 México, D.F. (México)
Tlfno: (+52) 55 54 80 38 40 ext 2140
Fax: (+52) 55 56 11 20 11
[EMAIL PROTECTED]

-----Mensaje original-----
De: Mark Nüßler [mailto:[EMAIL PROTECTED] Enviado el: Miércoles, 15 de Agosto de 2007 05:57 a.m.
Para: [email protected]
Asunto: JNI

hello users,

my first experience in ws was axis2c 3 month ago.
when i noticed that axis2c has no client session,
i decided to take axis2java, cause i don#T want
to implement on my own.

my service has to communicate with some
hardwaredevices. i build an jni wrapper
dll to talk to that devices - this works
fine. but when i try to load the libary
in the skeleton i run into trouble.

i have searched the user- and developer-list,
saw that i am not the only onw that runs
into trouble with jni,
but didn't find a proper answer.

so my question is, has anyone of you
did this succefully ?

my enviroment :
winXP
java 1.6

what i did :

1. write a simple service with a method that
adds 2 int's (adb-codegen) - works fine

2. write a jni-dll with the same method and
test it standalone - works fine

3. try to integrate :
place the native method in the skeleton,

public native int addieren(int a, int b);

generate with javah -jni the header-file,

JNIEXPORT jint JNICALL Java_org_apache_ws_axis2_Jni_1serviceSkeleton_addieren
   (JNIEnv *, jclass, jint, jint);

implement method and build the jni-dll,

JNIEXPORT jint JNICALL JNICALL Java_org_apache_ws_axis2_Jni_1serviceSkeleton_addieren(JNIEnv *env, jobject obj, jint a, jint b) {
        return (a + b);
}

declare static construct in skeleton,

static {
   try {
     System.load("<path>\\jni_simple_native.dll");
     //System.loadLibrary("jni_simple_native.dll");
   } catch(Exception e) {
     e.printStackTrace();
   }
}

when i use "System.loadLibrary" the dll could not be found,
i searched the web and checked my Windows PATH variable,
placed the dll in different folders like c:\windows\system32,
but same result.

when i use "System.load" the dll was found, but it seems
that the native method could not perform correctly

here is my implementation :

public org.apache.ws.axis2.AddierenResponse
     addieren(org.apache.ws.axis2.Addieren addieren) {

   AddierenResponse response = new AddierenResponse();
   int a = addieren.getParam0();
   int b = addieren.getParam1();

   System.out.println("--- server before --------");

   int c = addieren(a,b);

   System.out.println("--- server after --------");
   System.out.println("c : " + c);

   response.set_return(c);
   return response;
}

with "System.load" the server prints out the line
before the native method call and sents back an
Fault :
org.apache.ws.axis2.Jni_serviceSkeleton.addieren(II)I

i do not know how to handle this,
any help would be appreciated.

mfg derMark








---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to