弟兄,随便找本书都会告诉你如何调用ejb的啊。
给个例子吧。<%@ page contentType="text/html; charset=gb2312"
import="weblogictest.*"
import="java.io.*"
import="java.util.*"import="javax.ejb.*"
import="java.rmi.*"
import="javax.rmi.PortableRemoteObject"
import="javax.naming.*"
import="com.wellsoon.NetSecurity.RBAC.*"
import="com.wellsoon.NetSecurity.login.*"
%>
<%
boolean success = true;
try {
  Context ctx = new InitialContext(System.getProperties());
  ejbGroupTableRemoteHome home = (ejbGroupTableRemoteHome) PortableRemoteObject.
      narrow(ctx.lookup("ejbGroupTableRemote"), ejbGroupTableRemoteHome.class);
  ejbGroupTableRemote ejbGroup = home.createWithoutParentID(
    request.getParameter("groupName"),request.getParameter("groupDesc"));
}
catch (Exception e) {
  //response.getWriter().println("&sup3;&ouml;&Iuml;&Ouml;&acute;í&Icirc;ó");
  success=false;
  e.printStackTrace();
}%>
<html>
<head>
<title>
deleteGroup
</title>
</head>
<body bgcolor="#ffffff">
<%if(success) {
    response.sendRedirect("groupManagement.jsp");
}else {%>
<h2>&Igrave;í&frac14;&Oacute;&Ecirc;§°&Uuml;&pound;&iexcl;</h2>
<%}%>
</body>
</html>

解决方案 »

  1.   

    哈!顶楼上,把CLIENT中代码移到JSP中不就行了吗!。不过注意,在你的WEB站点中,CLASSPATH中必须有远程接口,和本地接口哦!
      

  2.   

    to zhaohaotong():
    import="weblogictest.*"是什么?是你发布ejb时打的包吗?还有classpath该怎么设置?要把发布的ejb的jar包加到classpath中去吗?是不是把weblogic.jar包加到classpath去就行了?
      

  3.   

    如果要把每个发布的ejb的jar包放到classpath供jsp文件调用那也太麻烦啦。那还不如打成ear包。
      

  4.   

    “import weblogictest.*”没有用,那是我自己测试的时候加上去的。你需要把那些.class文件放到WEB-INF子目录下的classes目录下,或者
    把打好的jar包放到WEB-INF/lib下。就可以了,不需要改classpath。
      

  5.   

    你发布了一个EJB总必需接远程接口提供给客户端吧, 这样客户端才知道怎么调用EJB。客户端根据得到的远程接口和Home接口import就行了。
      

  6.   

    奇怪的问题,可能是因为我没有真正明白问题,
    如果发布的?如果按规矩发布,用JNDI就可以调用了。
      

  7.   

    请问youfly(无名) 兄是什么意思?怎么接远程接口提供给客户端?在jsp文件代码中吗?
    我在j2ee服务器中jsp调用ejb已经成功啦(这里面可以设置jndi),现在转到weblogic中出现的问题多多,我现在都不知道怎样在weblogic中配置jndi啦,难道又要手动编写xml文件?那weblogic还没有j2ee服务器方便呢。
      

  8.   

    喂,pgz_007,你的ejb在weblogic中到底部署成功没有啊?
    如果部署成功了,那么你写在部署描述符里面的jndi name就会
    自动添加到weblogic的jndi Tree中去的。你可以在console中
    看到的。实际对ejb的调用只需要查找到jndi name,得到RemoteHome对象,
    就可以访问了啊。不明白你的问题到底是指什么?
      

  9.   

    对了,建议你使用jbuilder等集成开发环境来开发weblogic下的一个简单
    的ejb,就会知道里面的过程了。
      

  10.   

    to zhaohaotong():
    我就是用Jbuilder7开发的,weblogic8控制台上已经有我发布的ejb啦。现在关键是怎么用jsp调用它。 InitialContext ic = new InitialContext();
    **********  这里我该怎么设置jndi呢?***************************  
    Object objRef = ic.lookup("java:comp/env/ejb/TheConverter");
    ************那个TheConverter在哪里设置?(我没有打成ear包)****
             ConverterHome home =
             (ConverterHome)PortableRemoteObject.narrow(
             objRef, ConverterHome.class);
             converter = home.create();还有我在weblogic控制台中没有看到jndi Tree,请问在哪里?
      

  11.   

    是的啊,远程接口是要给JSP等需要调用EJB的客户端使用的。
      

  12.   

    一般来说,如果你是remote接口,你在lookup的时候只需要写明
    jndi name就可以了。jndi name是你自己写在部署文件中的,
    应该是在weblogic-ejb-jar.xml中。
    比如:
            <jndi-name>ejb20CMPRemote</jndi-name>
            <local-jndi-name>ejb20CMP</local-jndi-name>
    你只需要lookup("ejb20CMPRemote")就可以了。至于jndi tree,你可以在weblogic的控制台页面的左边applet部分,
    单击鼠标右键,在弹出的菜单中选择jndi tree,就会弹出一个
    浏览器窗口,显示weblogic系统此时的jndi tree了。那里面有
    你的ejb 的jndi name的全路径。
      

  13.   

    对了,好像是要在console里面左边的某一个server名字上单击
    鼠标右键。
    你自己找找看就知道了。
      

  14.   

    要明白调用的道理,你做完EJB,JBUILDER会打个JAR包,你把它部署在WLS里,并把JAR放在你的CLASSPATH,IMPORT你的类,你就象使用其他包一样使用就可以了,JAVA纯面向对象,别的对象怎么用,EJB照样用。。
      

  15.   

    如果是weblogic8,肯定是不可以的,因为jbuilder7还不支持weblogic8,打开weblogic-jbsp.jar就能看到只到weblogic7。:)