我用的是jboss402,ejb2.0,win2k架设的jboss服务器
在另一台xp系统的机子上用jbuilder06写了一个客户端程序,调用ejb(这个ejb也是用jbuilder里面的module做的)。
报错如下:
javax.naming.NameNotFoundException: ShowListBean not bound
拜托,请指教啊!
相关信息:
ejb-jar.xml片段:
<ejb-name>ShowListBean</ejb-name>
<home>rtvu.ejb.sb.ShowListHome</home>
<remote>rtvu.ejb.sb.ShowList</remote>
<ejb-class>rtvu.ejb.sb.ShowListBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
jboss.xml片段:
<ejb-name>ShowListBean</ejb-name>
<jndi-name>ShowListBean</jndi-name>
我的客户端调用ejb的代码如下:
package rtvu.ejb;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.util.Hashtable;
import rtvu.ejb.sb.*;//为了客户端编译通过,将ShowListBean.jar包导入,是否应该这么做?
public class EjbClient {
public EjbClient() {
}
public static void main(String args[]) throws NamingException{
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,”org.jnp.interfaces.NamingContextFactory”);
env.put(Context.PROVIDER_URL,”jnp://192.168.0.103:1099″);//jboss服务器所在地址
env.put(“java.naming.factory.url.pkgs”,”org.jboss.naming:org.jnp.interfaces”);
try{
Context ctx = new InitialContext(env);
Object obj = ctx.lookup(“ShowListBean”);//这里查的是ejb的jndi名,在jboss.xml里有定义
ShowListHome home =(ShowListHome) javax.rmi.PortableRemoteObject.narrow(obj, ShowListHome.class );
ShowList showlist = home.create();
showlist.say_hello();//在bean中定义的一个输出字符串的方法
}
catch(Exception e){
e.printStackTrace();
System.out.println(“Exception: ” + e.getMessage() );
}
}
}