没有这么访问的,jsp直接访问ejb虽然完全可以访问,但是层次太差!你写一个servicelocator,然后在jsp去调用就好了!
解决方案 »
- myEclipse启动tomcat启动失败,报如下错误,是怎么回事啊
- dom4j读取xml问题
- 帮我看看,为什么validata验证呢
- 请高手帮我分析一下下面的程序为什么能使图片高光显示?
- 有个疑问请高手解决
- jbuilder如果集成debug非jb自带tomcat,怎样解决Cannot load JDBC driver class 'null问题(详见内容)
- newInstance 和new 的问题
- 如何用entitybean来添加删除更新数据库中的记录呢?
- Jboss+EJb1.1,BMP的时候出现好多的错误:(
- EJB问题???
- 关于JXL里判断是否跨几行的问题
- 求教高手解决SCJP样题中的疑问!!!
<ejb-ref>
<ejb-ref-name>ml/MLAdminHome</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>ml.MLAdminHome</home>
<remote>ml.MLAdmin</remote>
</ejb-ref>2.在你的jboss-web.xml中加入如下内容: <ejb-ref>
<ejb-ref-name>ml.MLAdminHome</ejb-ref-name>
<jndi-name>MLAdmin</jndi-name>
</ejb-ref>3. 将ejb相关的home接口类与运行接口类(例如,你的util class)以jar的方式放在WEB-INF/lib目标下4. 在jsp中按下代码进行: Context ejbContext = new InitialContext();
MLAdminHome adminHome= (MLAdminHome) PortableRemoteObject.narrow(ejbContext.lookup("ml/MLAdminHome"), ml.MLAdminHome); MLAdmin mlAdmin = (MLAdmin)adminHome.create();
return mlAdmin.getName("[email protected]");
eclipse可以直接打包吧
<%@ page import="ml.MLAdmin" %>
<%@ page import="javax.naming.InitialContext" %><!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>Lomboz JSP</title>
</head>
<body bgcolor="#FFFFFF"> <% Context ejbContext = new InitialContext();
MLAdminHome adminHome= (MLAdminHome) PortableRemoteObject.narrow(ejbContext.lookup("ml/MLAdminHome"), ml.MLAdminHome);
MLAdmin mlAdmin = (MLAdmin)adminHome.create();
String result = mlAdmin.getName("[email protected]");
%>
<p>
<center>
<h3>Emal info</h3><br>
Input Query Emal ID : <input type="text" name="email"><br><br>
<input type="submit" value="Go"><br>
<font color="blue"><b>Email Adress:<%=result%></b>
</font>
</center>
</p>
</body>
</html>但是报错:
Context cannot be resolved or is not a type
ml.MLAdminHome cannot be resolved or is not a type
MLAdminHome cannot be resolved or is not a type
不知道是为什么
import javax.ejb.*;
import java.rmi.*;
import javax.rmi.*;
import java.util.*;
import javax.naming.*;
import ml.*;
<%@ page import="import javax.ejb.*" %>
<%@ page import="java.rmi.*" %>
<%@ page import="java.util.*" %>
<%@ page import="javax.naming.*" %>
<%@ page import="ml.*" %>
<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>Lomboz JSP</title>
</head>
<body bgcolor="#FFFFFF"> <% Context ejbContext = new InitialContext();
MLAdminHome adminHome= (MLAdminHome) PortableRemoteObject.narrow(ejbContext.lookup("ml/MLAdminHome"), ml.MLAdminHome);
MLAdmin mlAdmin = (MLAdmin)adminHome.create();
String result = mlAdmin.getName("[email protected]");
%>
<p>
<center>
<h3>Emal info</h3><br>
Input Query Emal ID : <input type="text" name="email"><br><br>
<input type="submit" value="Go"><br>
<font color="blue"><b>Email Adress:<%=result%></b>
</font>
</center>
</p>
</body>
</html>还有3个错误:
Syntax error on token "import",delete this token
ml.MLAdminHome cannot be resovled
PortableRemoteObject cannot be reslolved是不是还应该引用什么,或者缺少jar包?
我的工程是在eclipse里新建一个tomcat工程而得到的
多了个"import",去掉
<%@ page import="javax.ejb.*" %>
<%@ page import="java.rmi.*" %>
<%@ page import="java.util.*" %>
<%@ page import="javax.naming.*" %>
<%@ page import="ml.*" %>
<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>Lomboz JSP</title>
</head>
<body bgcolor="#FFFFFF"> <% Context ejbContext = new InitialContext();
MLAdminHome adminHome= (MLAdminHome) PortableRemoteObject.narrow(ejbContext.lookup("ml/MLAdminHome"), ml.MLAdminHome);
MLAdmin mlAdmin = (MLAdmin)adminHome.create();
String result = mlAdmin.getName("[email protected]");
%>
<p>
<center>
<h3>Emal info</h3><br>
Input Query Emal ID : <input type="text" name="email"><br><br>
<input type="submit" value="Go"><br>
<font color="blue"><b>Email Adress:<%=result%></b>
</font>
</center>
</p>
</body>
</html>
但是还报错:
ml.MLAdminHome cannot be resovled
PortableRemoteObject cannot be reslolved帮忙看看。
MLAdminHome adminHome= (MLAdminHome) PortableRemoteObject.narrow(ejbContext.lookup("ml/MLAdminHome"), ml.MLAdminHome); 部分是否缺少引用或者jar包?
楼主还是新手的话,没必要现在学ejb的,打好基础再说。
ml.MLAdminHome cannot be resovled
PortableRemoteObject cannot be reslolved可能是没有和MLAdminHome 连接上
还缺少一个引用
但是不知道怎么解决
<%@ page language="java" %>
<%@ page import="java.rmi.*" %>
<%@ page import="java.util.*" %>
<%@ page import="javax.naming.*" %>
<%@ page import="ml.*"%>
<%@ page import="javax.rmi.PortableRemoteObject"%> <!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>Lomboz JSP</title>
</head>
<body bgcolor="#FFFFFF"> <% Context ejbContext = new InitialContext();
ml.MLAdminHome adminHome= (ml.MLAdminHome) PortableRemoteObject.narrow(ejbContext.lookup("ml/MLAdminHome"), MLAdminHome.class);
MLAdmin mlAdmin = (MLAdmin)adminHome.create();
String result = mlAdmin.getName("[email protected]"); %>
<p>
<center>
<h3>Emal info</h3><br>
Input Query Emal ID : <input type="text" name="email"><br><br>
<input type="submit" value="Go"><br>
<font color="blue"><b>Email Adress:<%=result%></b>
</font>
</center>
</p>
</body>
</html>但是运行页面时,报错:
An error occurred at line: 17 in the jsp file: /jsptest.jsp
Generated servlet error:
G:\workspace\ccc\work\org\apache\jsp\jsptest_jsp.java:67: cannot access javax.ejb.EJBHome
file javax\ejb\EJBHome.class not found
MLAdmin mlAdmin = (MLAdmin)adminHome.create(); An error occurred at line: 17 in the jsp file: /jsptest.jsp
Generated servlet error:
G:\workspace\ccc\work\org\apache\jsp\jsptest_jsp.java:68: cannot access javax.ejb.EJBObject
file javax\ejb\EJBObject.class not found
String result = mlAdmin.getName("[email protected]"); 我分析是4楼ibiswang帖子中的内容3--“将ejb相关的home接口类与运行接口类(例如,你的util class)以jar的方式放在WEB-INF/lib目标下” 我没有做好
但是我已经将ejb的jar包myEJB.jar放到我的tomcat工程的web-inf的lib下面了请大家帮忙分析一下,谢谢
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="var" path="TOMCAT_HOME/common/lib/servlet-api.jar"/>
<classpathentry kind="var" path="TOMCAT_HOME/common/lib/jasper-runtime.jar"/>
<classpathentry kind="var" path="TOMCAT_HOME/common/lib/jsp-api.jar"/>
<classpathentry kind="src" path="WEB-INF/src"/>
<classpathentry output="work" kind="src" path="work"/>
<classpathentry kind="src" path="/J2EE_test"/>
<classpathentry kind="var" path="JBOSS32X/client/jboss-j2ee.jar"/>
<classpathentry kind="var" path="JBOSS32X/client/jnp-client.jar"/>
<classpathentry kind="var" path="JBOSS32X/client/jboss-client.jar"/>
<classpathentry kind="var" path="JBOSS32X/client/jboss-common-client.jar"/>
<classpathentry kind="var" path="JBOSS32X/client/jbosssx-client.jar"/>
<classpathentry kind="var" path="JBOSS32X/client/log4j.jar"/>
<classpathentry kind="var" path="JBOSS32X/client/jnet.jar"/>
<classpathentry kind="var" path="JBOSS32X/server/default/lib/jnpserver.jar"/>
<classpathentry kind="var" path="JBOSS32X/client/jboss-jaas.jar"/>
<classpathentry kind="output" path="WEB-INF/classes"/>
</classpath>
在tomcat里面还是没有这些包
要把包考到WEB-INF/lib下面
javax.servlet.ServletException: Name ml is not bound in this Context
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.jsptest_jsp._jspService(jsptest_jsp.java:92)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
加入环境
Hashtable h=new Hashtable();
h.putAll(System.getProperties());
String url="jnp://127.0.0.1:1099";
String fac="org.jnp.interfaces.NamingContextFactory";
h.put(InitialContext.PROVIDER_URL,url);
h.put(InitialContext.INITIAL_CONTEXT_FACTORY,fac);
Context ejbContext = new InitialContext(h);你在试试
把开发好的ejb jar包和web应用的war包公共放在deploy目录下。演示1:不需要jboss.xml文件和其他任何特殊的设置。ejb-jar.xml:<ejb-jar> ······ <ejb-name>ejbtest</ejb-name> ······</ejb-jar>客户端:web应用中对web.xml不需要添加ejb信息,不需要jboss-web.xml文件。引用ejb对象的jsp文件如下: ······ InitialContext ctx = new InitialContext(); Object objref = ctx.lookup("ejbtest"); //使用<ejb-name> beanHome=(zcxejb1Home)PortableRemoteObject.narrow(objref,ejbtestHome.class); ······<!--[if !supportEmptyParas]--> <!--[endif]-->
我之前的错误是,没有把我的tomcat和jboss整合
按上文,我把myEJB.jar和client.war放到jboss-3.2.8.SP1\server\all\deploy文件夹请问一下,怎么在jboss访问我的web工程client.war?