我也不知道为什么有这迷之需求
但是有这种需求就要试做一波
前期的准备工作
下载Wildfly
网址 http://wildfly.org/downloads/
在这里我选择了这个
下载解压
建立服务端
打开IDEA,写文章时候我使用的IDEA版本是2018.1.6 Ultimate版,JDK版本是1.8
勾选Web Application和EJB
Library那里选择Create选中wildfly目录下的jboss-modules.jar
取个名然后finish
创建一个接口类
创建一个Stateless Session Bean
很大可能会这样
然后解决方法就emmm(这么粗暴真的好嘛)
OK然后我们写一点东西
代码像这样
package test;
import javax.ejb.Remote;
@javax.ejb.Stateless(name = "HelloBeanEJB")
@Remote(Hello.class)
public class HelloBeanBean implements Hello {
public HelloBeanBean() {
}
@Override
public String say() {
return "Hello World";
}
}
在Run菜单里面找到Edit Confgure
运行一哈如果看到控制台里面有这些,基本上可以了
编写客户端
需要新建一个工程
把wildfly目录下的\bin\client\jboss-client.jar
拷贝到项目的lib目录下然后Add as Library
将Hello.java复制过来,注意要保证包名一致
在src目录下建立jboss-ejb-client.properties
输入
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
新建一个类
import test.Hello;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.util.Hashtable;
public class Main {
public static void main(String[] args) {
final Hashtable<String, String> jndiProperties = new Hashtable<>();
jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
try {
final Context context = new InitialContext(jndiProperties);
Hello hello = (Hello) context.lookup("ejb:/Server_war_exploded/HelloBeanEJB!test.Hello");
System.out.println(hello.say());
} catch (NamingException e) {
e.printStackTrace();
}
}
}
运行
看到预期输出,完成环境搭建