当前位置: 技术问答>java相关
jsp中调用EJB,找不着BEAN的类的问题。
来源: 互联网 发布时间:2017-04-06
本文导语: 我在JSP中使用EJB,将jsp放在应用的根目录下面,同时也将bean的home和remote接口对应的类拷贝到了和jsp文件同一个目录下面,可是部署之后,每次打开jsp文件的时候总是出现下面的错误,请问jsp和bean的位置关系应该是怎...
我在JSP中使用EJB,将jsp放在应用的根目录下面,同时也将bean的home和remote接口对应的类拷贝到了和jsp文件同一个目录下面,可是部署之后,每次打开jsp文件的时候总是出现下面的错误,请问jsp和bean的位置关系应该是怎么样的。我用的是weblogic.
多谢了!
C:beawlserver6.1configmydomainapplications.wlnotdeleteWEB-INF_tmp_war_myserver_myserver_reportTreejsp_servlet_newrepsecond.java:127: cannot resolve symbol
symbol : class GetColumnHome
location: class jsp_servlet._newrepsecond
GetColumnHome home = (GetColumnHome)PortableRemoteObject.narrow(o,GetColumnHome.class); //[ /newRepSecond.jsp; Line: 42]
^
C:beawlserver6.1configmydomainapplications.wlnotdeleteWEB-INF_tmp_war_myserver_myserver_reportTreejsp_servlet_newrepsecond.java:127: cannot resolve symbol
symbol : class GetColumnHome
location: class jsp_servlet._newrepsecond
GetColumnHome home = (GetColumnHome)PortableRemoteObject.narrow(o,GetColumnHome.class); //[ /newRepSecond.jsp; Line: 42]
^
C:beawlserver6.1configmydomainapplications.wlnotdeleteWEB-INF_tmp_war_myserver_myserver_reportTreejsp_servlet_newrepsecond.java:127: cannot resolve symbol
symbol : class GetColumnHome
location: class jsp_servlet._newrepsecond
GetColumnHome home = (GetColumnHome)PortableRemoteObject.narrow(o,GetColumnHome.class); //[ /newRepSecond.jsp; Line: 42]
^
C:beawlserver6.1configmydomainapplications.wlnotdeleteWEB-INF_tmp_war_myserver_myserver_reportTreejsp_servlet_newrepsecond.java:128: cannot resolve symbol
symbol : class GetColumn
location: class jsp_servlet._newrepsecond
GetColumn getColumn = home.create(); //[ /newRepSecond.jsp; Line: 43]
多谢了!
C:beawlserver6.1configmydomainapplications.wlnotdeleteWEB-INF_tmp_war_myserver_myserver_reportTreejsp_servlet_newrepsecond.java:127: cannot resolve symbol
symbol : class GetColumnHome
location: class jsp_servlet._newrepsecond
GetColumnHome home = (GetColumnHome)PortableRemoteObject.narrow(o,GetColumnHome.class); //[ /newRepSecond.jsp; Line: 42]
^
C:beawlserver6.1configmydomainapplications.wlnotdeleteWEB-INF_tmp_war_myserver_myserver_reportTreejsp_servlet_newrepsecond.java:127: cannot resolve symbol
symbol : class GetColumnHome
location: class jsp_servlet._newrepsecond
GetColumnHome home = (GetColumnHome)PortableRemoteObject.narrow(o,GetColumnHome.class); //[ /newRepSecond.jsp; Line: 42]
^
C:beawlserver6.1configmydomainapplications.wlnotdeleteWEB-INF_tmp_war_myserver_myserver_reportTreejsp_servlet_newrepsecond.java:127: cannot resolve symbol
symbol : class GetColumnHome
location: class jsp_servlet._newrepsecond
GetColumnHome home = (GetColumnHome)PortableRemoteObject.narrow(o,GetColumnHome.class); //[ /newRepSecond.jsp; Line: 42]
^
C:beawlserver6.1configmydomainapplications.wlnotdeleteWEB-INF_tmp_war_myserver_myserver_reportTreejsp_servlet_newrepsecond.java:128: cannot resolve symbol
symbol : class GetColumn
location: class jsp_servlet._newrepsecond
GetColumn getColumn = home.create(); //[ /newRepSecond.jsp; Line: 43]
|
jsp文件所在目录下/web-inf/classes/package(if you have package in your java class)/*.class
|
首先说明的是jap中直接调用ejb是一个很不好的习惯,其中的原因大家都心知肚明,建议使用一个javabean来调用
另外一定要调用的话,必须import对应ejb的remote和home接口,加在classpath中不是一个好的方法
另外一定要调用的话,必须import对应ejb的remote和home接口,加在classpath中不是一个好的方法
|
import 这个了吗?
|
好象要package的,不然找不到这个类的
|
要么放在 classes 下
要么修改 Weblogic 的类路径使其找得到该类
放在相同目录下没用的
要么修改 Weblogic 的类路径使其找得到该类
放在相同目录下没用的
|
你的ejb打包过没有?如果打过包的话,要将目录考过去的,才好用!
还有,必须在jsp中,import的才可以,如果没有打包的话:
就是 avtom(avtom) 说得那样!
如果打包的话,就要加包名了!
还有,必须在jsp中,import的才可以,如果没有打包的话:
就是 avtom(avtom) 说得那样!
如果打包的话,就要加包名了!
|
JSP调用的类应该放在web-inf/classes下,一般EJB都是打包的(指EJB的类打的包,而不是指.jar文件),所以放在这个目录下应该没问题,JSP调用的时候应该是认得出的
还有一个办法就是在系统的classpath中加入你的EJB文件,这样就能够顺利调用了。不过感觉这种解决方法不是很好,因为等于你还是在本地调用EJB,而不是远程。应该是返回一个客户端的.jar文件,里面存有EJB的本地引用,能够让你的JSP通过这个引用调用你所发布的EJB
你可以用j2ee自带的J2EE RI发布看看,它能自动返回一个client的.jar文件作为本地引用,不过自己具体怎么开发我也不会
还有一个办法就是在系统的classpath中加入你的EJB文件,这样就能够顺利调用了。不过感觉这种解决方法不是很好,因为等于你还是在本地调用EJB,而不是远程。应该是返回一个客户端的.jar文件,里面存有EJB的本地引用,能够让你的JSP通过这个引用调用你所发布的EJB
你可以用j2ee自带的J2EE RI发布看看,它能自动返回一个client的.jar文件作为本地引用,不过自己具体怎么开发我也不会
|
我不是很熟weblogic,刚开始看。我用的是Oracle 9i,我就把在Oracle 9i下的发布说一下,希望会有帮助。
首先是发布ejb,发布完成后会在Oracle 9i安装目录下的application目录下生成一个mis(假设的发布目录)的目录,在这个目录下应该有一个package目录,这个目录下是ejb的home、remote接口和ejb本身。在mis的META-INF目录下还有一个ejb-jar.xml文件,这个文件指定了ejb的名称和home、remote接口的class。
然后在jsp文件中调用ejb时,一定要import这个package, avtom说的对。
首先是发布ejb,发布完成后会在Oracle 9i安装目录下的application目录下生成一个mis(假设的发布目录)的目录,在这个目录下应该有一个package目录,这个目录下是ejb的home、remote接口和ejb本身。在mis的META-INF目录下还有一个ejb-jar.xml文件,这个文件指定了ejb的名称和home、remote接口的class。
然后在jsp文件中调用ejb时,一定要import这个package, avtom说的对。