package com.titan.cabin;import com.titan.cabin.CabinHome;
import com.titan.cabin.Cabin;
import com.titan.cabin.CabinPK;
import java.rmi.RemoteException;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;import weblogic.jndi.WLInitialContextFactory;
import weblogic.rmi.extensions.*;
import javax.ejb.CreateException;
import javax.ejb.EJBException;
import javax.ejb.FinderException;
import javax.ejb.ObjectNotFoundException;
import javax.ejb.RemoveException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
public class client_1 {
    public static void main(String [] args){
          try {
Context jndiContext = getWeblogicInitialContext();
            Object obj = jndiContext.lookup("CabinBean");
            CabinHome home = (CabinHome) javax.rmi.PortableRemoteObject.narrow(obj, CabinHome.class);            Cabin cabin_1 = home.create(1);
            System.out.println("created it!");
            cabin_1.setName("Master Suite");
            cabin_1.setDeckLevel(1);
            cabin_1.setShip(1);
            cabin_1.setBedCount(3);
                   
            CabinPK pk = new CabinPK();
            pk.id = 1;
            System.out.println("keyed it! ="+ pk);
            
            Cabin cabin_2 = home.findByPrimaryKey(pk);
            //System.out.println("found by key! ="+ cabin_2);
            System.out.println(cabin_2.getName());
            System.out.println(cabin_2.getDeckLevel());
            System.out.println(cabin_2.getShip());
            System.out.println(cabin_2.getBedCount());        } catch (java.rmi.RemoteException re){re.printStackTrace();}
          catch (javax.naming.NamingException ne){ne.printStackTrace();}
          catch (javax.ejb.CreateException ce){ce.printStackTrace();}
          catch (javax.ejb.FinderException fe){fe.printStackTrace();}
    }    public static Context getWeblogicInitialContext() 
                          throws javax.naming.NamingException {
       Properties p = new Properties();
       p.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
       p.put(Context.PROVIDER_URL, "t3://bingo:7001");
       return new InitialContext(p);
    }
}

解决方案 »

  1.   

    t3是weblogic修改iiop以后的一种协议
    用来远程访问对象。你是本机调试还是分布式
    调试呢?如果你在执行client的时候
    没有输入url,那么String url= "t3://localhost:7001";
    你看看url和端口有没有错误
      

  2.   

    这个错误我也遇到过,只要把weblogicaux.jar和weblogicbeans.jar包含进classpath就可以了(前一个jar文件是肯定要的,后一个是不是要或者是另一个,我记不清了)。
    反正你把client的程序修改一下,把exception打出来,就可以找到问题在那里了。
      

  3.   

    首先谢谢大家对我的帮助
    to gdsean:
    url和端口肯定没有错误的,我是这给他加参数了,也不行
    to: backlove:
    和我得不配套,怎么用呀?
    to:supersonics:
    好像也不行,我查看了exception好像是发生在lookup中
      

  4.   

    Beginning statelessSession.Client...We were unable to get a connection to the WebLogic server at t3://localhost:7001Please make sure that the server is running.
    这是我得错误信息
      

  5.   

    还有,请问各位高手,ejb怎么样才算部署成功呢?
    是不是在console中的ejb下的deploybeans和delpoy units中看到那个bean就算部署成功了?
      

  6.   

    weblogic启动ejb的时候不报错就对了
      

  7.   

    backlove:你的例程好象是Richard Monson-Haefel著的EJB,再推荐一本好书吗?
      

  8.   

    对呀,是没有报错,还告诉我有一个ejb employ success,可是为什么还出现这种情况那?
      

  9.   

    不好意思,我指的classpath指的是client.java运行时的classpath.
      

  10.   

    There's another excellent book in EJB name <<Mastering EJB >>, you can get it in http://www.theserverside.com .
      

  11.   

    你启动weblogic的时候有没有看到1 deployed,0 failed deployed提示呢?
    这样表示一个ejb部署发布成功,如果这样还是出现连接服务器错误,那么
    你得在同一台电脑里面调试,把localhost改成自己的ip试试
      

  12.   

    我说过了,很可能就是我说的那个问题。
    不信,把exception贴出来,让大家看看。