TAG:
本文只是展示一个基本的例子(同时上载原码): //--------------------------------EJB------------------------------------------- 1。Remote 接口(Hello.java) package com.hello; import javax.ejb.EJBObject; import java.rmi.RemoteException; public interface Hello extends EJBObject { public String hello() throws RemoteException; } 2。Home 接口(HelloHome.java) package com.hello; import javax.ejb.EJBHome; import java.rmi.RemoteException; import javax.ejb.CreateException; public interface HelloHome extends EJBHome { public Hello create() throws RemoteException,CreateException; } 3。Bean 类(HelloBean.java) package com.hello; import javax.ejb.SessionBean; import javax.ejb.SessionContext; public class HelloBean implements SessionBean { //EJB Required Methods public void ejbCreate(){} public void ejbPassivate(){} public void ejbActivate(){} public void ejbRemove(){} public void setSessionContext(SessionContext sct){} //Business Methods public String hello() { System.out.println("服务器端显示!"); return "客户端显示!"; } } 4。描述文件1(ejb-jar.xml) ''''-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN'''' ''''http://java.sun.com/dtd/ejb-jar_2_0.dtd'''> 5。描述文件2(weblogic-ejb-jar.xml) ''''-//BEA Systems, Inc.//DTD WebLogic 7.0.0 EJB//EN'''' ''''http://www.bea.com/servers/wls700/dtd/weblogic-ejb-jar.dtd'''> 关于EJB的部署方法,不在类述。 //---------------------------------------Servlet---------------------------- 注:我将.class 拷贝到DefaultWebApp\\WEB-INF\\classes\\下 修改了DefaultWebApp\\WEB-INF\\下的web.xml。 1。Servlet文件(HelloServlet.java) import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import javax.naming.*; import java.util.*; import javax.ejb.*; import javax.rmi.PortableRemoteObject; import com.hello.*; public class HelloServlet extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { try { res.setContentType("text/html;charset=GBK"); PrintWriter out = res.getWriter(); out.println(""); out.println(""); Context context; Properties p = new Properties(); p.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory"); String url = "t3://localhost:7001"; p.put(Context.PROVIDER_URL, url); p.put(InitialContext.SECURITY_PRINCIPAL,"system"); p.put(InitialContext.SECURITY_CREDENTIALS,"weblogic"); context = new InitialContext(p); Object obj = context.lookup("Hello"); HelloHome home = (HelloHome)PortableRemoteObject.narrow(obj,HelloHome.class); Hello hello = home.create(); out.println(hello.hello()); hello.remove(); out.println(""); out.println(""); } catch(Exception e) { e.printStackTrace(); } } } 2。描述文件(web.xml) http://java.sun.com/dtd/web-app_2_3.dtd";> //---------------------------调用方法------------------------------------------- htt://localhost:7001/hello 页面输出:“客户端显示!” 服务器端输出:“服务器端显示!” [打包下载] [引用该文] [发表评论] [转寄该文] [关闭窗口] 此文章相关评论: 该文章有12个相关评论如下:(点这儿论坛方式查看) -------------------------------------------------------------------------------- glglgl 发表于: 2002/06/21 04:52pm 为什么IE6 显示: Error 500--Internal Server Error From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1: 10.5.1 500 Internal Server Error The server encountered an unexpected condition which prevented it from fulfilling the request. 是不是我的WLS7要重装,但宠物店可以正常使用。 顶部 ditty 发表于: 2002/06/21 04:58pm WLS端显示什么? 顶部 glglgl 发表于: 2002/06/21 05:47pm [这个贴子最后由glglgl在 2002/06/21 05:49pm 编辑] 环境(2000专业版+wls7+ie6) java.lang.NoClassDefFoundError:com/hello/HelloHome at ............... at ................ 请问怎样将显示自动输入一LOG文件,而不是手工输入。 我想可能是我的机器有点特别,也可能是哪里没注意。 顶部 ditty 发表于: 2002/06/24 08:07am 这样的错误就很明显了,对于一个Client程序(包括servlet/jsp/main),想要调用EJB,必须在本地的classpath中有EJB的RemoteInterface class,HomeInterface class,也就是说在本地要能找到这两个类才行。简单一点,将EJB的包拷贝一份放在本地,同时指定classpath就行了。但是,如果出于安全考虑,那就需要将这两个类单独打包,放在本地。这是最佳选择。 顶部 glglgl 发表于: 2002/06/24 09:11am 我还是不清楚,我在系统的CLASSPATH加入EJB的JAR包, 在STARTWLS.CMD的CLASSPATH加入EJB的JAR包,还是没用, 你能再说得清楚一些吗?谢谢! 我现在是EJB一个包,SERVLET一个WAR包,要怎么配? 顶部 ditty 发表于: 2002/06/24 10:16am [这个贴子最后由ditty在 2002/06/24 01:39pm 编辑] 可以将war保打开,将ejb_name.jar加到WEB-INF\\lib下,重新打包。这样就不用设置classpath了。 顶部 glglgl 发表于: 2002/06/24 01:08pm 还是不行。 顶部 ox 发表于: 2002/06/27 05:14pm 拷贝helloejb.jar到本地c:\\,classspath=c:\\helloejb.jar,同样的错误 Error 500--Internal Server Error From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1: 10.5.1 500 Internal Server Error The server encountered an unexpected condition which prevented it from fulfilling the request 顶部 wuzhimin7802 发表于: 2003/05/28 12:11pm very good!!! 顶部 mrtong2003 发表于: 2003/05/28 06:22pm 不要拷贝什么的啦,烦不烦啊,简单一点你把所有的相关的class文件(比如home,bean interface)全部送到文中说的classes目录下就搞定啦. 顶部 mrtong2003 发表于: 2003/05/29 04:36pm 为什么,同样的配置,我一台电脑可以的,用我的笔记本电脑就不行了呢? ,显示错误如下 Error 404 Not Found From RFC 2068 Hypertext Rransfer Protocol -HTTP/1.1 10.4.5 404 Not Found 我的WLS可是开着的啊(虽然上面没有显示任何错误)但我的BEAN是部署成功的呀。怎么会找不到呢?我是按照DITTY的例子写的啊。这样写在我一台电脑上完全可以使用的,为什么啊 顶部 原子cq 发表于: 2003/06/03 11:31am 请教一个调用Servlet的问题 我有一个servlet(名字Test.class)布署在inter.war(war的访问路径是inter,如http://localhost:7001/inter/)里,其在web.xml的相关配置如下: 我有一个页面home.jsp在根目录下(访问路径是http://localhost:7001/home.jsp),我在home.jsp页里的调用servlet代码如下: |