工具:Eclipse , wildfly 8.x
1、服务端:
1)创建接口
package com.welv.ejb;
public interface FirstEjb {
public String saySomething(String name);
}
2)实现
package com.welv.ejb.impl;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import com.welv.ejb.FristEjb;
@Stateless
@Remote(FirstEjb.class)
public class FirstEjbBean implements FirstEjb{
@Override
public String saySomething(String name) {
// TODO Auto-generated method stub
return "nihaoaaaaaaa";
}
}
2、抽取接口,将接口export成jar包
3、创建client:
1)导入2创建的jar包
2)创建properties文件: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=8080
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
remote.connection.default.username=admin
remote.connection.default.password=adminadmin
**用户名密码可以通过jboss下bin文件夹中的add-user.bat进行设置
**jboss7的port为4447,jboss6为1099且jboss6的配置文件不同
2)客户端代码:
package com.welv.ejbclient;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import com.welv.ejb.FirstEjb;
public class FirstEjbClient {
public static void main(String[] arg){
try{
final Properties jndiProperties = new Properties();
jndiProperties.put(Context.URL_PKG_PREFIXES,
"org.jboss.ejb.client.naming");
final Context context = new InitialContext(jndiProperties);
final String appName = "";
// 部署的jar文件的名字
final String moduleName = "EJB_01";
final String distinctName = "";
// 实现类的类名
final String beanName = "FirstEjbBean";
// 接口类的全名
final String viewClassName = FirstEjb.class.getName();
String lookupStr = "ejb:" + appName + "/" + moduleName + "/"
+ distinctName + "/" + beanName + "!" + viewClassName;
System.out.println(lookupStr);
FirstEjb firstejb = (FirstEjb) context.lookup(lookupStr);
String s = firstejb.saySomething("ss");
System.out.println(s);
}catch(Exception e){
System.out.println("请检查调用方法是否为远程");
}
}
}