首先在eclipse新建一个ejb project
建好后,在ejbModule下建立接口文件Hello.java其内容为
package com.fhit.ejb;
public interface Hello {
public String say(String name);
}
接着建立HelloBean.java其内容为
package com.fhit.ejb;
import javax.ejb.Remote;
import javax.ejb.Stateless;
@Stateless
@Remote(Hello.class)
public class HelloBean implements Hello{
@Override
public String say(String name) {
// TODO Auto-generated method stub
return name+"你好啊";
}
}
其中文件目录结构为
可以直接在eclipse中把项目添加进jboss运行
把项目导出为jar文件
2,建立客户端,新建java工程配置环境把上一步导出的jar及jboss安装目录下如
D:\jboss\wildfly-8.1.0.Final\bin\client的jboss-client.jar导入工程
新建class编写客户端Tclient.java
package src;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.fhit.ejb.Hello;
public class Tclient {
public static void main(String[] args) throws NamingException {
Properties props=new Properties();
props.setProperty(Context.URL_PKG_PREFIXES,"org.jboss.ejb.client.naming");
try
{
Context context=new InitialContext(props);
final String appName = "";//这是应用名,即打包的后缀是.ear ,如果不是发布的这个类型,为空
final String moduleName = "EjbT";//发布在JBoss中的为.jar的包名
final String distinctName = "";//JBoss as7允许每个部署有一个不同的名称(别名吧,可选),这里我没有设置
final String beanName = "HelloBean";//无状态会话bean接口的一个实现类
final String viewClassName = Hello.class.getName();//无状态会话bean接口的全路径:com.fhit.ejb.Hello
//最后拼接成lookup函数可识别的JNDI:"ejb:appName/moduleName/distinctName/beanName!viewClassName";
//这里就是ejb:/EjbT//HelloBean!com.fhit.ejb.Hello
String jndi = "ejb:" + appName + "/" + moduleName + "/" +
distinctName + "/" + beanName + "!" + viewClassName;
Hello hello=(Hello)context.lookup(jndi);
System.out.println(hello.say("jboss"));
}
catch(NamingException e)
{
e.printStackTrace();
}
}
}
最重要的是最后一步,在工程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=127.0.0.1
remote.connection.default.port = 8080
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
remote.connection.default.username=fhit 这里是jboss添加的用户
remote.connection.default.password=fhit 用户密码
然后运行客户端程序出现如下结果:
这里就表明调用成功.