1.环境准备
OS: Windows 8, 64 Bit
JDK: 1.8
Eclipse: Photon Release (4.8.0)
WildFly: 14.0.1.Final
2.WildFly
介绍
WildFly 是JBoss AS的新的项目的名称。
JBoss分为AS 和 EAP两个版本, AS是开源社区版本,EAP-Enterprise Application Platform是在开源版本上构建的企业版本。
JBoss AS 7.2.0是JBoss EAP 6.1 的基础上开发的,从 8版本开始, JBoss AS就换成了WildFly。
下载
下载地址:
http://wildfly.org/downloads/
目前(2018/11)最新版是 14.0.1.Final。
下载后解压,这里解压到 D:\install\wildfly14 目录。
配置与启动
WildFly的后台管理需要输入用户名密码登录。 所以需要使用管理员账号。使用 add-user.bat 执行交互式用户和密码设定。默认安装有admin用户, 可以通过这种方式修改密码。
- 命名行切换到 D:\install\wildfly14\bin, 执行 add-user.bat
- 设定管理员用户名/密码: admin/admin
上图中, 输入a 添加管理员账号, 后面输入admin后提示是已有账号, 修改密码即可。 - 设定用户完成后,在相同的目录,执行 standalone.bat, 启动服务
控制台地址: http://127.0.0.1:9990/
在浏览器输入以上地址, 会要求输入用户名/密码。正确输入后,效果如下:
3. EJB 服务创建
- 在Eclipse 中建立EJB Project, Project 名字为: ejb_service
2.别急着点Finish, 点击下一步之后, 在之后下一步中勾选产生部署描述的xml文件。
创建后的项目结构如下:
ejbModule里面放的就是源码文件。
-
将ejb的依赖包加入项目的build path
文件路径在: D:\install\wildfly14\modules\system\layers\base\javax\ejb\api\main
-
新建接口和服务类。
右键单击项目,New-> Session Bean
输入包名、类名并勾选创建远端接口。
点击Finish后, 会创建两个文件
-
在接口和Bean的文件中添加方法。
package cn.osxm.jcodef.ejb;
import javax.ejb.Remote;
@Remote
public interface HelloWorldRemote {
public String sayHello(String user);
}
package cn.osxm.jcodef.ejb;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
/**
* Session Bean implementation class HelloWorld
*/
@Stateless
@LocalBean
public class HelloWorld implements HelloWorldRemote {
/**
* Default constructor.
*/
public HelloWorld() {
// TODO Auto-generated constructor stub
}
@Override
public String sayHello(String username) {
return "Hello," + username + ". This is first EJB Service.";
}
}
6.打包部署
右键单击项目, Export
默认打包的文件名是项目名.jar, 这里是 ejb_service.jar
部署只需要将这个文件复制到 D:\install\wildfly14\standalone\deployments 目录下。
Wildfly 支持热部署, 在服务开启的状况下, 将文件 拷入会自动的部署。在服务控制台可以看到部署的日志:
以上红色框部分就是服务的地址, 后面客户端调用的时候就是使用这个地址。
4.客户端调用
新建一个普通的Java项目进行测试。客户端调用需要:
- 客户端调用依赖包: jboss-client.jar
位于JBoss安装目录: D:\install\wildfly14\bin\client
也可以在网络直接下载或是通过Maven中央库导入。 - 服务端的接口, 也就是上面的: cn.osxm.jcodef.ejb.HelloWorldRemote
这个接口文件必须和服务端的包和接口名及需要调用的接口保持一致。
可以从服务器端直接提供,或是打包成 jar档进行导入,在客服端写的话,注意保持一致。 - 服务器的路径
这个和Wildfly的管理控制页面是不一样的端口, 查找方式:
到管理控制台以下页面
默认是8080端口, 和Tomcat的端口是一样的。
如果同时使用Tomcat和Wildfly的话, 可以修改这个端口。 - 服务的路径, 上面也提到了。这里是:
ejb_service/HelloWorld!cn.osxm.jcodef.ejb.HelloWorldRemote
可以从Wildfly服务控制台日志看到, 也可以到管理页面中查询。
Runtime->JNDI
5. 调用代码:
/**
* @Title: HelloWorldMain.java
* @Package cn.osxm.jcodef.ejb
* @Description: TODO
* @author osxm:oscarxueming
* @date 2018��11��24�� ����5:51:47
* @version V1.0
*/
package cn.osxm.jcodef.func.ejb.client;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
/**
* @ClassName: HelloWorldMain
* @Description: TODO
* @author osxm:oscarxueming
*/
public class HelloWorldMain {
/**
* @Title: main
* @Description: TODO
* @param args
* @throws NamingException
*/
public static void main(String[] args) throws NamingException {
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
props.put(Context.PROVIDER_URL, "http-remoting://127.0.0.1:8080");
props.put("jboss.naming.client.ejb.context", true);
InitialContext context = new InitialContext(props);
// JNDI·
String fullEJBName = "ejb_service/HelloWorld!cn.osxm.jcodef.ejb.HelloWorldRemote";
cn.osxm.jcodef.ejb.HelloWorldRemote helloWorld = (cn.osxm.jcodef.ejb.HelloWorldRemote) context.lookup(fullEJBName);
System.out.println(helloWorld.sayHello("osxm"));
}
}
今天的文章EJB 开发环境与入门实例分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/23806.html