织梦CMS - 轻松建站从此开始!

罗索

当前位置: 主页>杂项技术>JAVA>

Servlet 调用 EJB 实战(原来的帖子有显示问题)

罗索客 发布于 2003-10-15 17:29 点击:次 
本文只是展示一个基本的例子(同时上载原码): //--------------------------------EJB------------------------------------------- 1。Remote 接口(Hello.java) package com.hello; import javax.ejb.EJBObject; import java.rmi.RemoteException; public interfac
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'''>


  
     HelloWorld
     com.hello.HelloHome
     com.hello.Hello
     com.hello.HelloBean
     Stateless
     Container
  



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'''>


   HelloWorld
   Hello


关于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";>


   HelloServlet
   HelloServlet


   HelloServlet
   /hello


//---------------------------调用方法-------------------------------------------
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)
<10107> <.....> Root cause of ServletException
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的相关配置如下:


   test
   inter.Test


   test
   /test



我有一个页面home.jsp在根目录下(访问路径是http://localhost:7001/home.jsp),我在home.jsp页里的调用servlet代码如下:

或者,提交时显示找不到test这个servlet(其路径显示为http://localhost:7001/inter/test)
而我用http://localhost:7001/inter/test直接访问这个servlet则可以访问到.

应该不存在跨应用访问的问题:因为我使用一个别人的war,在根目录下定写一jsp访问其servlet时不存在此问题。

这到底是怎么回事啊? (ditty)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/200310/1364.html]
本文出处: 作者:ditty
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容