jsp的开头应将必要的包import
如:
<%@ page import="javax.ejb.*"%>
<%@ page import="javax.naming.*"%>
<%@ page import="你自己的包.类"%>
然后,程序中Properties props = System.getProperties();
Context ctx = new InitialContext(props);
HelloWorldHome lHome = (HelloWorldHome) lContext.lookup("jndi名");
如:
<%@ page import="javax.ejb.*"%>
<%@ page import="javax.naming.*"%>
<%@ page import="你自己的包.类"%>
然后,程序中Properties props = System.getProperties();
Context ctx = new InitialContext(props);
HelloWorldHome lHome = (HelloWorldHome) lContext.lookup("jndi名");
解决方案 »
- 【100分求解决】正则表达式匹配
- struts2怎样从jsp页面传值到action中呢?
- 当form设置为enctype="multipart/form-data",获取数据乱码
- 每年双月底之前提交一次文档。怎么设计数据库?请过来人赐教!
- no session 问题
- 时间段校验算法
- 为啥第一次访问都是空白页面呢?
- Tomcat5.0.28配置数据库连接池出现的问题:
- jsp中用out.println();来动态输出xml文件,为什么有时能显示,有时什么都没有呢?
- 如果您能回答这些问题,就可以去sun公司了——高手请进
- weblogic6.1与oracle9i数据库的连接池
- 我装CVS后,在客户端运行,为什么总显示,"no sunch repository err"
是:
HelloWorldHome lHome = (HelloWorldHome)ctx.lookup("要调用的ejb的jndi名");
WEB-INF的classes里,可是出现这样的提示:test包找不到,怎么会事呢。
然后把jsp贴出来看看 !
// ========= index.jsp ========<%@ page
session="false"
isThreadSafe="true"
isErrorPage="false"
import="javax.naming.*"
import="javax.ejb.*"
import="test.*"
%><h4>Web Client</h4>
<p><%
try {
Context lContext = new InitialContext();
HelloWorldHome lHome = (HelloWorldHome) lContext.lookup(
"java:comp/env/ejb/HelloWorld"
);
HelloWorld lSession = lHome.create();
out.println( lSession.hello() );
}
catch( Exception e ) {
out.println( "Caugth exception: " + e.getMessage() );
e.printStackTrace();
}
%></p><br/><br/>
发布成功了吗?
如果是HelloWorld.那下面改成
HelloWorldHome lHome = (HelloWorldHome) lContext.lookup("HelloWorld");
试试.另外,你的程序里哪里用到什么test.*** 了 ?
哦,你的ejb用test包了...
那就是:
test.HelloWorldHome lHome = (test.HelloWorldHome) lContext.lookup("HelloWorld");
HelloWorldHome lHome = (HelloWorldHome) lContext.lookup(
"java:comp/env/ejb/HelloWorld"
);
这一句做什么的
其次在
HelloWorldHome lHome = (HelloWorldHome) lContext.lookup(
"java:comp/env/ejb/HelloWorld"不使用java:comp/env/ejb/HelloWorld,而是直接使用HelloWorld中的jndi name试一试。或者在web.xml里加
<ejb-ref>
<ejb-ref-name>ejb/HelloWorld</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>test.HelloWorldHome</home>
<remote>test.HelloWorld</remote>
</ejb-ref>试一试吧,两种方法应该都可以。
什么是jndi name可以解释一下吗
就是jboss里的这一段内容。
<enterprise-beans>
<session>
<ejb-name>HelloWorld</ejb-name>
<jndi-name>ejb/HelloWorld</jndi-name>
</session>
</enterprise-beans>
</jboss>
你的jboss.xml里有这段内容吧?改成下面的试试
HelloWorldHome lHome = (HelloWorldHome) lContext.lookup(
"ejb/HelloWorld");
-----------------我的web.xml------------------
<web-app>
<display-name>Web Client</display-name>
<context-root>/web-test</context-root>
<!-- The Welcome File List -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<ejb-ref>
<ejb-ref-name>ejb/HelloWorld</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>HelloWorldHome</home>
<remote>HelloWorld</remote>
</ejb-ref>
</web-app>--------------------------我的jboss-web.xml----------------------
<jboss-web>
<context-root>/web-test</context-root>
<ejb-ref>
<ejb-ref-name>ejb/HelloWorld</ejb-ref-name>
<jndi-name>ejb/HelloWorld</jndi-name>
</ejb-ref>
</jboss-web>
请指教。