hi manish
what webserver are you using? as far as i know servlets run in a servlet
sandbox security and a lot of servlet supporting webservers might not allow
servlets to call native methods.
refer jason hunter's book page 412-413
----- Original Message -----
From: "Manish Bhatnagar" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Saturday, May 20, 2000 12:09 PM
Subject: Java Native Interface
> Hi!
>
> I have a servlet that calls a native function (written in C++ that
> generates sum of first n fibonacci numbers, n being the input
> parameter). The servlet is called upon submission of .shtml file. I get
> "500 Internal Server Error" when the form is submitted. The code for the
> servlet and native function is given below.
>
> ------------- Native.java --------------
> import javax.servlet.*;
> import javax.servlet.http.*;
> import java.io.*;
> import java.util.*;
>
>
> public class Native extends HttpServlet implements
> javax.servlet.SingleThreadModel
> {
>
> file://public native void test();
> public native int fibonacci(int n);
>
>
> public void init(ServletConfig config) throws ServletException
> {
> super.init(config);
> }
>
> public void doGet(HttpServletRequest request, HttpServletResponse
> response) throws IOException, ServletException
> {
> doPost(request, response);
> }
>
>
> public void doPost(HttpServletRequest request, HttpServletResponse
> response) throws IOException, ServletException
> {
> System.out.println("Before native function");
> System.loadLibrary("test2");
> System.out.println("After loadLibrary"); file://--> Till here, it's
fine
> int number=5;
> int result=fibonacci(number); file://--> Some problem here
> System.out.println("Result: "+result);
> file://System.loadLibrary("Test2");
>
> System.out.println("After native function");
> }
> }
>
> ------------- Native.java --------------
>
> ------------- try1.shtml --------------
>
>
> <html>
> <head>
> <script language=JavaScript>
> <!--
> function btnSubmitOnClick()
> {
> file://alert("Hello")
> document.frmTest.action="servlet/Native"
> document.frmTest.submit()
> }
> file://-->
> </script>
> </head>
> <body>
> <form name=frmTest method=post>
> <input type=submit value=Submit OnClick="return btnSubmitOnClick()">
> </form>
> </body>
> </html>
>
> ------------- try1.shtml --------------
>
>
> ------------- test2.cpp --------------
>
> // test2.cpp : Defines the entry point for the console application.
> //
>
> #include "stdafx.h"
> #include "jni.h"
> #include "Native.h"
>
> /* int main(int argc, char* argv[])
> {
> printf("Hello World!\n");
> return 0;
> } */
>
> int fibo(int n)
> {
> if(n <= 1) return 0;
> if(n == 2) return 1;
> return fibo(n - 1) + fibo(n - 2);
> }
>
> JNIEXPORT jint JNICALL Java_Native_fibonacci(JNIEnv *env, jobject obj,
> jint n)
> {
> printf("Inside JNI function");
> return fibo(n);
> }
>
> ------------- test2.cpp --------------
> Can someone track where the problem lies?
> Regards,
> Manish
>
>
___________________________________________________________________________
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the
body
> of the message "signoff SERVLET-INTEREST".
>
> Archives: http://archives.java.sun.com/archives/servlet-interest.html
> Resources: http://java.sun.com/products/servlet/external-resources.html
> LISTSERV Help: http://www.lsoft.com/manuals/user/user.html
___________________________________________________________________________
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff SERVLET-INTEREST".
Archives: http://archives.java.sun.com/archives/servlet-interest.html
Resources: http://java.sun.com/products/servlet/external-resources.html
LISTSERV Help: http://www.lsoft.com/manuals/user/user.html