2009-06-26 3 views
0

Я добавил собственный метод в java bean-код.Java bean with JNI?

Затем я скопировал DLL-файл в папку System32.

при использовании javabean в JSP.

дает ошибку:

HTTP Status 500 -

отчета Тип исключения

сообщение

описание Сервер обнаружил внутреннюю ошибку(), что помешало ему выполнить эту просьбу.

исключения

org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.UnsatisfiedLinkError: BeanDir.mysimplebean.sayHello()Ljava/lang/String; 
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 

первопричина

javax.servlet.ServletException: java.lang.UnsatisfiedLinkError: BeanDir.mysimplebean.sayHello()Ljava/lang/String; 
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862) 
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791) 
    org.apache.jsp.jsp.callbean_jsp._jspService(callbean_jsp.java:124) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 

первопричина

java.lang.UnsatisfiedLinkError: BeanDir.mysimplebean.sayHello()Ljava/lang/String; 
    BeanDir.mysimplebean.sayHello(Native Method) 
    org.apache.jsp.jsp.callbean_jsp._jspService(callbean_jsp.java:112) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 

примечания Полной трассировка стеки первопричины доступна в журналах Apache Tomcat/6.0.20 , Apache Tomcat/6.0.20

Java код боб:

package BeanDir; 
import java.util.*; 
//This file must be compiled Manually using javac 
//cd D:\tomcat\webapps\examples\WEB-INF\classes\BeanDir\mysimplebean.java 
public class mysimplebean 
{ 
    static 
    { 
     String s=System.getProperty("java.library.path"); 
     System.setProperty("java.library.path",s); 
     System.loadLibrary("HelloWorld"); 
    } 
    public String getceoname() 
    { 
     String ceonameval = "Tom Hanks CEO of Tom Hanks INC";   
     return ceonameval; 
    } 
    public String ceoemail() 
    { 
     String ceoemailval = "[email protected]";  
     return ceoemailval; 
    } 
    public double findtakehome(int salary,String designation) 
    {   
     double takehomeamt; 
     if(designation=="Developer") 
     { 
      takehomeamt = salary+salary*0.15; //15 % Raise in Salary 
     } 
     else 
     { 
      takehomeamt = salary+salary*0.10; //10 % Raise in Salary 
     } 
     return takehomeamt; 
    } 
    public native String sayHello();  
} 

ответ

0

Я не могу оставить комментарий, но ..

  1. это ваш сервлет контейнер на машине же окна, что длл является на?
  2. : System.getProperty ("java.library.path") включает в себя папку system32 (изнутри jsp)?

ответ на оба вопроса «да» для этой работы

+0

hi ryan, Я использовал тот же .dll (внутри папки system32) для сервлета, он отлично работает. И я запускаю отдельную консоль pgm, чтобы найти «java.library.path» , а также показывает папку system32. – krishnakumar

+0

Вам нужно сделать что-то вроде: test.jsp: <% out.print («Моя dll должна быть где-то здесь:» + System.getProperty («java.library.path»)); %> –

+0

привет Райана, я пытался использовать один и тот же файл .dll в другой сервлет page.It показывает ошибку «.dll загруженную в другой загрузчик классов» .so, что я пытаюсь создать JNI обертку в Java Bean. с этим я могу создать множество экземпляров, в которых я упоминаю его атрибут области как «приложение» в используемом теге bean. Если у вас есть какие-либо предложения по поводу этого, дайте мне знать. спасибо – krishnakumar

0

Привет я получил решение этой должности.

но не с Java bean.

Я напишу обертку JNI в классе.

и я создал объект в программе JSP.