RemoteHelloWorld:遠端業務介面LocalHelloWorld:本地業務介面HelloWorldBean:無狀態 Session Bean 實作類別jndi.properties:客戶端 JNDI 設定hello.jsp:測試頁面// Remote 介面
package com.yourcompany.ejb3;
public interface RemoteHelloWorld {
String say(String name);
}
// Local 介面
package com.yourcompany.ejb3;
public interface LocalHelloWorld {
String say(String name);
}
// Bean 實作
package com.yourcompany.ejb3;
import javax.ejb.*;
@Remote(RemoteHelloWorld.class)
@Local(LocalHelloWorld.class)
@Stateless
public class HelloWorldBean implements RemoteHelloWorld, LocalHelloWorld {
public String say(String name) {
return "這是一個無狀態的 EJB3 Session Bean,作者:" + name;
}
}
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost:1099
<%
Properties props = new Properties();
props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("jndi.properties"));
InitialContext ctx = new InitialContext(props);
RemoteHelloWorld remote = (RemoteHelloWorld) ctx.lookup("HelloWorldBean/remote");
out.println(remote.say("Christina007[remote]") + "<br/>");
LocalHelloWorld local = (LocalHelloWorld) ctx.lookup("HelloWorldBean/local");
out.println(local.say("Christina007[local]"));
%>
這是一個無狀態的 EJB3 Session Bean,作者:Christina007[remote]
這是一個無狀態的 EJB3 Session Bean,作者:Christina007[local]
@Stateless、@Remote、@Local 註解InitialContext.lookup() 取得 Proxy 呼叫