Jbuilder5+weblogic6.1编写EJB的成功例子
1.安装Jbuilder5 enterprise 到c:\jbuider5\
  BAS 安装到c:\BAS\
2.安装weblogic6.1 到C:\bea
  weblogic 在C:\bea\wlserver6.1 下
3.配置jbuidler5(否则会发现创建ejb的选项是灰色的)
  Tools\Enterprise setup
    Application Server
    BAS 4.5: 选择BAS安装目录c:\BAS
    Weblogic6.0:
    weblogic installation directory 选择C:\bea\wlserver6.1         
    bea home directory 选择 C:\bea
4.编写EJB
  package:ejbpro
  ejb group name:ejbgroup
  包文件:ejbgroup.jar,包含ejb-jar.xml,manifest.mf,weblogic-ejb-jar.xml,以及ejbpro下的所有编译过的类文件
  类文件:1)远程接口
//myFirst.java//remote interface
package ejbpro;import java.rmi.*;
import javax.ejb.*;/**
 * Title:
 * Description:
 * Copyright:    Copyright (c) 2002
 * Company:
 * @author
 * @version 1.0
 */public interface myFirst extends EJBObject {
  public String message(String str) throws RemoteException;
}
2)Bean类
//myFirstBean.java//bean objectpackage ejbpro;import java.rmi.*;
import javax.ejb.*;/**
 * Title:
 * Description:
 * Copyright:    Copyright (c) 2002
 * Company:
 * @author
 * @version 1.0
 */public class myFirstBean implements SessionBean {
  private SessionContext sessionContext;
  public void ejbCreate() {
  }
  public void ejbRemove() throws RemoteException {
  }
  public void ejbActivate() throws RemoteException {
  }
  public void ejbPassivate() throws RemoteException {
  }
  public void setSessionContext(SessionContext sessionContext) throws RemoteException {
    this.sessionContext = sessionContext;
  }
  public String message(String str)throws RemoteException{
    System.out.println("Remote Object Received From Client: \""+str+"\""); //打印(从客户端)接收到的字符串。
    return "Hello,I'm Remote Object"; //返回一应答字符串。
  }}  
3)HOME接口
//myFirstHome.java//remote homepackage ejbpro;import java.rmi.*;
import javax.ejb.*;/**
 * Title:
 * Description:
 * Copyright:    Copyright (c) 2002
 * Company:
 * @author
 * @version 1.0
 */public interface myFirstHome extends EJBHome {
  public myFirst create() throws RemoteException, CreateException;
}  
4)客户端javaBean
//Client.java//java Bean
package ejbpro;/**Client side JavaBean to call EJB
 * By TomChen
 * 2002-4-26
 */
public class Client {
  public String message(){
    String receiveFromRemote="Error";
    try{
        javax.naming.Context initContext=new javax.naming.InitialContext();
        Object obj=initContext.lookup("myj2ee"); //远程查找,由名字得到对应的对象。
        myFirstHome home=(myFirstHome)javax.rmi.PortableRemoteObject.narrow(obj,myFirstHome.class);
        myFirst remote=home.create();
        receiveFromRemote=remote.message("Hello,Remote Object!"); //远程方法调用
        //System.out.println("Received From Remote Object: \""+receiveFromRemote+"\"");
    }
    catch(Exception e){
      e.printStackTrace();
    }
    return receiveFromRemote;
  }
  public static void main(String[] args){
    try{
        javax.naming.Context initContext=new javax.naming.InitialContext();
        Object obj=initContext.lookup("myj2ee"); //远程查找,由名字得到对应的对象。
        myFirstHome home=(myFirstHome)javax.rmi.PortableRemoteObject.narrow(obj,myFirstHome.class);
        myFirst remote=home.create();
        String receiveFromRemote=remote.message("Hello,Remote Object!"); //远程方法调用
        System.out.println("Received From Remote Object: \""+receiveFromRemote+"\"");
    }
    catch(Exception e){
      e.printStackTrace();
    }
  }

5.部署EJB
  1)将ejbgroup.jar copy 到C:\bea\wlserver6.1\config\mydomain\applications\
  2)将ejbpro copy 到 C:\bea\wlserver6.1\config\mydomain\applications\DefaultWebApp\WEB-INF\classes
  3)启动weblogic default server
    进入控制台http://localhost:7001/console
    点击左面的操作目录 Deployement 下的EJB,点击右框架中的Install a new EJB...Upload ejbgroup.jar
    上传后左边的EJB下出现ejbgroup,点击,在右边的框架中选中 Deployed,点击Apply
  finised.
6.编写index.jsp
  <html>
  <head>
  <title>EJB测试 </title>
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  </head>
  <body bgcolor="#FFFFFF">
  <jsp:useBean id="ejb" class="ejbpro.Client"/>
  <%
   String str=ejb.message();
   out.println(str);
  %>
 </body>
 </html>        
放在C:\bea\wlserver6.1\config\mydomain\applications\DefaultWebApp\下
7.开始测试 http://localhost:7001/index.jsp       

解决方案 »

  1.   

    SalaryHome.java如下:
    package simpleBean;public interface SalaryHome extends javax.ejb.EJBHome{
    Salary create() throws java.rmi.RemoteException,javax.ejb.CreateException;}
    Salary.java的代码如下;package simpleBean;public interface Salary extends javax.ejb.EJBObject{
    double calculateSalary(int annualSalary,int pensionContrib,double bonus)throws 
    java.rmi.RemoteException;
    }package simpleBean;SalaryEJB.java的代码如下import javax.ejb.*;
    public class SalaryEJB implements SessionBean{
    public void ejbCreate(){}
    public void ejbRemove(){}
    public void ejbActivate(){}
    public void ejbPassivate(){}
    public void setSessionContext(SessionContext ctx){}
    private static double taxRate=28;
    public double calculateSalary(int annualSalary,int pensionContrib,double bonus)throws 
    java.rmi.RemoteException
    {
    double monthly=0;
    monthly=annualSalary/12;
    monthly=monthly+bonus;
    monthly=monthly-(monthly*(pensionContrib/100));
    monthly=monthly-(monthly*(taxRate/100));
    return monthly;
    }
    }
    以上三个文件编译完成后的类文件在如下目录中:f:\java-beans\test\simpleBean客户端的测试带如下文件名SalaryClient.java,目录在:f:\java-beans\test,其中的代码如下:
    import javax.ejb.*;
    import simpleBean.*;//
    import javax.naming.InitialContext;
    //in j2ee package the package to import is seted up into the classpath
    public class SalaryClient{
    public static void main(String[] args)
    {
    try
    {
       InitialContext ctx=new InitialContext();
       Object objRef=ctx.lookup("Salary");
       SalaryHome home=(SalaryHome)javax.rmi.PortableRemoteObject.narrow(objRef,SalaryHome.class);
       Salary bean=home.create();
       System.out.println("monthly net salary:"+bean.calculateSalary(29000,2,500));
    }catch(javax.naming.NamingException ne)
    {
    System.out.println(ne);
    }
    catch(javax.ejb.CreateException ce)
    {
    System.out.println(ce);
    }
    catch(java.rmi.RemoteException re)
    {
    System.out.println(re);
    }
    }
    }我启动的sun的J2EE而没有用那些高级的集成Application serve,
    现在的问题时我的客户端测试代码编译不了。更不用提运行了,各位大虾,如如何编译,如何运行啊!?救命啊!!!!!!
    我在系统的环将变量里面设置了:JAVA_HOME 为e:\j2ee
    classpath里面也加了e:\j2ee\lib\j2ee.jar