首先是环境:我用的是IDEA+jboss-as-7.1.1.Final;
一、JBoss环境搭建
这个自行百度;
二、用IDEA创建EJB项目
1、新建一个空的Java项目
File --> New --> Project;
然后一路点next,配置项目名。这里我的项目名为 EJBDemo ;
结果如下:
2、创建服务端Module
选中项目名 --> 右键 --> New --> Module…
如果没有Download选项,可以在这里下载 javax.ejb-api.jar,然后选择use library自行配置;
设置完成后,点击next,输入模块名,这里我填的是 EJBServer ;
结果如下:
在src文件下,创建pers.jhl.session.stateless
包;
Java包命名规范请看这:Java包(package)的命名规范&规则
然后在stateless下创建接口HelloWorld
package pers.jhl.session.stateless;
import javax.ejb.Remote;
@Remote
public interface HelloWorld {
public String sayHello(String name);
}
创建HelloWorld的实现类HelloWorldBean
package pers.jhl.session.stateless;
import javax.ejb.Stateless;
@Stateless(name="HelloWorldBean")
public class HelloWorldBean implements HelloWorld {
public String sayHello(String name){
return "hello," + name;
}
}
3、创建客户端Module
同上:
结果:
继续配置环境:
在EJBClient模块下新建lib文件夹,用来存放我们将要用到的包;
之后在JBoss/bin/client文件夹下找到jboss-client.jar包放到lib文件夹下;
然后在File --> Project Structure -->中配置
如下内容
然后选择新建lib文件下的jar包;
导入即可。
最后开始写代码:
首先将EJBServer中pers包完整的复制一份到EJBClient中src下;之后在pers.jhl.session下新建client包;在该包下创建HelloWorldClient类;
客户端代码如下:
package pers.jhl.session.client;
import pers.jhl.session.stateless.HelloWorld;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.util.Properties;
public class HelloWorldClient {
public static void main(String[] args) {
try{
Properties pro = new Properties();
pro.put(Context.URL_PKG_PREFIXES,"org.jboss.ejb.client.naming");
pro.put("jboss.naming.client.ejb.context",true);
Context context = new InitialContext(pro);
HelloWorld h = (HelloWorld) context.lookup("ejb:/EJBClient_war_exploded/HelloWorldBean!pers.jhl.session.stateless.HelloWorld");
System.out.println( h.sayHello("Medlen"));
}catch(NamingException e){
e.printStackTrace();
}
}
}
关于lookup中ejb:/
后的内容应当为java:jboss/exported/
后面的内容:
下面的内容是在JBoss启动后打印出的信息
在src文件夹下新建jboss-ejb-client.properties文件,配置如下:
endpoint.name=client-endpoint
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port=4447
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
remote.connection.default.username=jboss用户名
remote.connection.default.password=jboss密码
3、到这里就完全配置完成了
- 启动JBoss
- 运行HelloWorldClient
结果:
完整源码下载:EJBDemo