在此特別感謝:sql技術群主 ☆藍藍心情★
謝謝在中午遠程教我 EJB
原理參考:EJB原理學習_RMIC
這可能是我第一個EJB 和大家分享:
環境:jboss+ejb+jdk5.0
需要jar包
注:Client中 Test.jar 就是 EJBTest(服務器打的包)

EJB組件:
接口
package
?org.test;
import ?javax.ejb.Remote;
//在我的EJB原理中介紹
//是可以被 rmic 的接口
@Remote
public ? interface ?IHello?{
???? public ?String?sayHello(String?name);
}
import ?javax.ejb.Remote;
//在我的EJB原理中介紹
//是可以被 rmic 的接口
@Remote
public ? interface ?IHello?{
???? public ?String?sayHello(String?name);
}
實現類
package
?org.test;
import ?javax.ejb.Stateless;
import ?org.jboss.annotation.ejb.RemoteBinding;
@Stateless
//設置遠程JNDI名字(設置遠程JNDI名字,客戶端在通過JNDI lookup的時候,用的就是這個名字)
//不同中間件的實現,默認JNDI名字是不一樣的,所以不一定是***/Remote或***/Local
//RemoteBinding是 jboss特有的
@RemoteBinding(jndiBinding = " MclarenEJB " )
public ? class ?Hello? implements ?IHello?{
???? public ?String?sayHello(String?name)?{
???????? return ? " Hello? " + name;
????}
}
import ?javax.ejb.Stateless;
import ?org.jboss.annotation.ejb.RemoteBinding;
@Stateless
//設置遠程JNDI名字(設置遠程JNDI名字,客戶端在通過JNDI lookup的時候,用的就是這個名字)
//不同中間件的實現,默認JNDI名字是不一樣的,所以不一定是***/Remote或***/Local
//RemoteBinding是 jboss特有的
@RemoteBinding(jndiBinding = " MclarenEJB " )
public ? class ?Hello? implements ?IHello?{
???? public ?String?sayHello(String?name)?{
???????? return ? " Hello? " + name;
????}
}
jdk編輯+打包成jar后熱部署到%JBOSS_HOME%\server\default\deploy
客戶端:
import
?java.util.Properties;
import ?javax.naming.Context;
import ?javax.naming.InitialContext;
import ?org.test.IHello;
public ? class ?Client?{
???? public ? static ? void ?main(String[]?args)?{
???????? try ?{
?????????Properties?props? = ? new ?Properties();
?????????props.put( " java.naming.factory.initial " ,? " org.jnp.interfaces.NamingContextFactory " );
?????????props.put( " java.naming.provider.url " ,? " jnp://localhost:1099 " );
?????????props.put( " java.naming.factory.url.pkgs " ,? " org.jboss.naming:org.jnp.interfaces " );
?????????Context?context? = ? new ?InitialContext(props);
?????????IHello?h? = ?(IHello)?context.lookup( " MclarenEJB " );
?????????System.out.println(h.sayHello( " EJB?3.0?Test " ));
????????}? catch (Exception?e)?{
????????????e.printStackTrace();
????????}
????}
}
import ?javax.naming.Context;
import ?javax.naming.InitialContext;
import ?org.test.IHello;
public ? class ?Client?{
???? public ? static ? void ?main(String[]?args)?{
???????? try ?{
?????????Properties?props? = ? new ?Properties();
?????????props.put( " java.naming.factory.initial " ,? " org.jnp.interfaces.NamingContextFactory " );
?????????props.put( " java.naming.provider.url " ,? " jnp://localhost:1099 " );
?????????props.put( " java.naming.factory.url.pkgs " ,? " org.jboss.naming:org.jnp.interfaces " );
?????????Context?context? = ? new ?InitialContext(props);
?????????IHello?h? = ?(IHello)?context.lookup( " MclarenEJB " );
?????????System.out.println(h.sayHello( " EJB?3.0?Test " ));
????????}? catch (Exception?e)?{
????????????e.printStackTrace();
????????}
????}
}
結果是:
Hello EJB 3.0 Test