此例子的前提是把jboss都配置成功后的一个小的例子(以无状态会话bean为例,在eclipse-SDK-3.5.1-win32实现):
每个会话bean都需要有一个bean接口和一个bean类,其中bean接口是客户端代码和bean内部交互的机制,而bean类是内部方法的实现;一个会话bean的业务逻辑实现是在它的bean类中。会话bean的bean类还必须实现javax.ejb.SessionBean 接口或者用元数据描述符@stateless作为类声明的前缀。
创建工程SimpleSessionApp,然后通过properties=>Java Bulid Path =>Libraries的Add External JARS... 把C:\jboss-5.1.0.GA\client下的jar包全部加入
接口SimpleSession.java
package com.ejb;
public interface SimpleSession {
public String getEchoString(String clientString);
}
接口实现SimpleSessionBean.java
package com.ejb;
import javax.ejb.Remote;
import javax.ejb.Stateless;
@Stateless
@Remote({SimpleSession.class})
public class SimpleSessionBean implements SimpleSession{
public String getEchoString(String clientString){
return clientString + " - from session bean";
}
}
客户端代码SimpleSessionClient.java:
package com.client;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.ejb.SimpleSession;
public class SimpleSessionClient {
/**
* @param args
*/
public static void main(String[] args) {
Hashtable<String, String> props = new Hashtable<String, String>();
props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); //JNDI驱动类名,它类似与JDBC指定驱动类
props.put(Context.PROVIDER_URL, "localhost:1099"); //命名服务提供者的的URL,包含提供命名服务的主机地址和端口号,它类似与JDBC指定数据的连接URL
props.put("java.naming.rmi.security.manager", "yes");
props.put(Context.URL_PKG_PREFIXES, "org.jboss.naming");
// Context context=new InitialContext(props);
try {
InitialContext ctx = new InitialContext(props);
SimpleSession simpleSession = (SimpleSession)ctx.lookup("SimpleSessionBean/remote");
String returnString = simpleSession.getEchoString("Ejb3.0 Test Jboss");
System.out.println("sent string:Ejb3.0 Test Jboss"+ ",received string :" + returnString);
} catch (NamingException e) {
e.printStackTrace();
}
}
}
上面代码完成后,把src\com\ejb下的两个类打成jar包,启动服务器,然后把jar包拷贝到C:\jboss-5.1.0.GA\server\default\deploy
打开http://localhost:8080/
JMX Console =>service=JNDIView =>点击list下的Invoke
看到如下说明发布成功:
然后运行SimpleSessionClient.java,便可以看到运行结果:
sent string:Ejb3.0 Test Jboss,received string :Ejb3.0 Test Jboss - from session bean