Glassfish不同WEB项目调用ejb对象
来源:互联网 发布:大麦网抢票软件个人版 编辑:程序博客网 时间:2024/03/29 03:03
参考:
http://www.blogjava.net/terryxue/archive/2010/03/06/314695.html
http://blog.csdn.net/zjx86320/article/details/47145769
http://www.blogjava.net/terryxue/archive/2010/03/06/314695.html
http://blog.csdn.net/zjx86320/article/details/47145769
1.Glassfish不同WEB项目调用ejb对象
本文使用NetBeans创建了3个项目demo,dtdmp-interface、webtest1、webtest2。其中,dtdmp-interface用于生成公共JAR;webtest1创建TestService类,实现了dtdmp-interface定义的接口;webtest2跨项目调用webtest1的TestService类的EJB对象。
1.1.JAR类库项目dtdmp-interface
1.1.1.新建JAR类库项目dtdmp-interface
1、右键:新建项目,打开向导
2、类别选择"Maven",项目选择"Java应用程序",点击"下一步"
3、项目名称:dtdmp-interface;组件ID:com.gsm;版本:1.0;包:com.gsm.dtdmp.service;点击"完成"。
2、类别选择"Maven",项目选择"Java应用程序",点击"下一步"
3、项目名称:dtdmp-interface;组件ID:com.gsm;版本:1.0;包:com.gsm.dtdmp.service;点击"完成"。
注意:可通过在项目上右键属性,修改版本号。
1.1.2.项目dtdmp-interface添加接口定义
1、新建包com.gsm.dtdmp.service.bean,在包下创建类文件ServiceTestVO
package com.gsm.dtdmp.service.bean;
import java.io.Serializable;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class ServiceTestVO implements Serializable {
public class ServiceTestVO implements Serializable {
private String id;
private String name;
private String name;
public String getId() {
return id;
}
return id;
}
public void setId(String id) {
this.id = id;
}
this.id = id;
}
public String getName() {
return name;
}
return name;
}
public void setName(String name) {
this.name = name;
}
this.name = name;
}
}
2、在包com.gsm.dtdmp.service,创建接口类ITestService
package com.gsm.dtdmp.service;
import com.gsm.dtdmp.service.bean.ServiceTestVO;
public interface ITestService {
ServiceTestVO getServiceTestVO(String id);
}
}
1.1.3.生成JAR
1、清理并构建项目
2、可以从日志看到生成了dtdmp-interface\target\dtdmp-interface-1.0.jar
3、JAR引用方式
2、可以从日志看到生成了dtdmp-interface\target\dtdmp-interface-1.0.jar
3、JAR引用方式
<dependency>
<groupId>com.gsm</groupId>
<artifactId>dtdmp-interface</artifactId>
<version>1.0</version>
</dependency>
<groupId>com.gsm</groupId>
<artifactId>dtdmp-interface</artifactId>
<version>1.0</version>
</dependency>
1.2.WEB项目webtest1
1.2.1.新建WEB项目webtest1
1、右键:新建项目,打开向导
2、类别选择"Maven",项目选择"Web应用程序",点击"下一步"
3、项目名称:webtest1;组件ID:com.gsm;版本:1.0;包:com.gsm.webtest1;点击"下一步"
4、服务器选择:Glassfish Server 4.1;Java EE版本选择:Java EE 7 Web;点击"完成"
2、类别选择"Maven",项目选择"Web应用程序",点击"下一步"
3、项目名称:webtest1;组件ID:com.gsm;版本:1.0;包:com.gsm.webtest1;点击"下一步"
4、服务器选择:Glassfish Server 4.1;Java EE版本选择:Java EE 7 Web;点击"完成"
1.2.2.添加实现类
1、在pom.xml的dependencies节点下面添加dtdmp-interface-1.0.jar的引用方式,如:
<dependency>
<groupId>com.gsm</groupId>
<artifactId>dtdmp-interface</artifactId>
<version>1.0</version>
</dependency>
<groupId>com.gsm</groupId>
<artifactId>dtdmp-interface</artifactId>
<version>1.0</version>
</dependency>
2、可以在项目的依赖关系看到已经引入了dtdmp-interface。如果,没有引入,则在依赖关系找到dtdmp-interface,右键"手动安装工件",选择dtdmp-interface-1.0.jar进行安装
3、在包com.gsm.webtest2新建类TestService
package com.gsm.webtest1;
package com.gsm.webtest1;
import com.chuangdata.dtdmp.service.bean.ServiceTestVO;
import com.chuangdata.dtdmp.service.i.ITestService;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import com.chuangdata.dtdmp.service.i.ITestService;
import javax.ejb.Remote;
import javax.ejb.Stateless;
@Remote({ITestService.class})
@Stateless
public class TestService implements ITestService {
@Stateless
public class TestService implements ITestService {
@Override
public ServiceTestVO getServiceTestVO(String id) {
ServiceTestVO vo = new ServiceTestVO();
vo.setId("1001");
vo.setName("C0001");
return vo;
}
public ServiceTestVO getServiceTestVO(String id) {
ServiceTestVO vo = new ServiceTestVO();
vo.setId("1001");
vo.setName("C0001");
return vo;
}
}
注意:一定要加@Remote({ITestService.class}),否则,将lookup获取的ejb对象转换为ITestService时,如果是glassfish的相同domain但不同项目间调用,将报错,如:
java.lang.ClassCastException: com.sun.proxy.$Proxy367 cannot be cast to com.chuangdata.dtdmp.service.i.ITestService
java.lang.ClassCastException: com.sun.proxy.$Proxy367 cannot be cast to com.chuangdata.dtdmp.service.i.ITestService
1.3.WEB项目webtest2
1.3.1.新建WEB项目webtest2
1、右键:新建项目,打开向导
2、类别选择"Maven",项目选择"Web应用程序",点击"下一步"
3、项目名称:webtest2;组件ID:com.gsm;版本:1.0;包:com.gsm.webtest2;点击"下一步"
4、服务器选择:Glassfish Server 4.1;Java EE版本选择:Java EE 7 Web;点击"完成"
2、类别选择"Maven",项目选择"Web应用程序",点击"下一步"
3、项目名称:webtest2;组件ID:com.gsm;版本:1.0;包:com.gsm.webtest2;点击"下一步"
4、服务器选择:Glassfish Server 4.1;Java EE版本选择:Java EE 7 Web;点击"完成"
1.3.2.添加实现类
1、在pom.xml的dependencies节点下面添加dtdmp-interface-1.0.jar的引用方式,如:
<dependency>
<groupId>com.gsm</groupId>
<artifactId>dtdmp-interface</artifactId>
<version>1.0</version>
</dependency>
<groupId>com.gsm</groupId>
<artifactId>dtdmp-interface</artifactId>
<version>1.0</version>
</dependency>
2、可以在项目的依赖关系看到已经引入了dtdmp-interface。如果,没有引入,则在依赖关系找到dtdmp-interface,右键"手动安装工件",选择dtdmp-interface-1.0.jar进行安装
3、新建包com.gsm.webtest2.entity,创建实体类TestVO
package com.gsm.webtest2.entity;
import java.io.Serializable;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class TestVO implements Serializable {
public class TestVO implements Serializable {
private String id;
private String name;
private String name;
public String getId() {
return id;
}
return id;
}
public void setId(String id) {
this.id = id;
}
this.id = id;
}
public String getName() {
return name;
}
return name;
}
public void setName(String name) {
this.name = name;
}
this.name = name;
}
}
4、新建包com.gsm.webtest2.commons,创建类ApplicationConfig
5、新建包com.gsm.webtest2.control,创建类TestService
package com.gsm.webtest2.control;
import com.gsm.dtdmp.service.ITestService;
import com.gsm.dtdmp.service.bean.ServiceTestVO;
import com.gsm.webtest2.entity.TestVO;
import javax.ejb.Stateless;
import javax.naming.InitialContext;
import com.gsm.dtdmp.service.bean.ServiceTestVO;
import com.gsm.webtest2.entity.TestVO;
import javax.ejb.Stateless;
import javax.naming.InitialContext;
@Stateless
public class TestService {
public class TestService {
private ITestService service;
private ITestService getService() {
if (null == service) {
try {
InitialContext ctx = new InitialContext();
String applicationName = "webtest1";
String jndiName = "java:global/" + applicationName + "/TestService";
Object obj = ctx.lookup(jndiName);
service = (ITestService) obj;
} catch (Exception ex) {
ex.printStackTrace();
}
}
return service;
}
if (null == service) {
try {
InitialContext ctx = new InitialContext();
String applicationName = "webtest1";
String jndiName = "java:global/" + applicationName + "/TestService";
Object obj = ctx.lookup(jndiName);
service = (ITestService) obj;
} catch (Exception ex) {
ex.printStackTrace();
}
}
return service;
}
public TestVO getTestVO() {
if (null != getService()) {
ServiceTestVO data = getService().getServiceTestVO("");
if (data != null) {
TestVO testVO = new TestVO();
testVO.setId(data.getId());
testVO.setName(data.getName());
return testVO;
}
}
return null;
}
}
if (null != getService()) {
ServiceTestVO data = getService().getServiceTestVO("");
if (data != null) {
TestVO testVO = new TestVO();
testVO.setId(data.getId());
testVO.setName(data.getName());
return testVO;
}
}
return null;
}
}
6、新建包com.gsm.webtest2.boundary,创建类TestREST
package com.gsm.webtest2.boundary;
import com.gsm.webtest2.control.TestService;
import com.gsm.webtest2.entity.TestVO;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import com.gsm.webtest2.entity.TestVO;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Stateless
@Path("test")
public class TestREST {
@Path("test")
public class TestREST {
@EJB
private TestService service;
private TestService service;
@GET
@Path("gettestvo")
@Produces(MediaType.APPLICATION_JSON)
public TestVO getTestVO() {
return service.getTestVO();
}
}
@Path("gettestvo")
@Produces(MediaType.APPLICATION_JSON)
public TestVO getTestVO() {
return service.getTestVO();
}
}
7、新建包com.gsm.webtest2.commons,创建类ApplicationConfig
package com.gsm.webtest2.commons;
import javax.ws.rs.core.Application;
@javax.ws.rs.ApplicationPath("api")
public class ApplicationConfig extends Application {
}
public class ApplicationConfig extends Application {
}
1.4.运行项目,检查效果
1、项目webtest1,清理并构建
2、项目webtest2,清理并构建
3、运行项目webtest1
4、运行项目webtest2
5、浏览器输入:http://localhost:8080/webtest2/api/test/gettestvo,正常的话会输出数据:{"id":"1001","name":"C0001"}
2、项目webtest2,清理并构建
3、运行项目webtest1
4、运行项目webtest2
5、浏览器输入:http://localhost:8080/webtest2/api/test/gettestvo,正常的话会输出数据:{"id":"1001","name":"C0001"}
阅读全文
0 0
- Glassfish不同WEB项目调用ejb对象
- 不同客户端调用EJB
- glassfish web项目 热部署
- 在Glassfish中进行EJB调用的几种场景
- 在Glassfish中进行EJB调用的几种场景
- 在Glassfish中进行EJB调用的几种场景
- 在Glassfish中进行EJB调用的几种场景
- GlassFish中进行EJB调用的几种场景
- 远程客户端调用GlassFish V3.1的EJB所需的GlassFish V3.1库
- JavaEE:glassfish EJB bug
- GlassFish EJB配置
- glassfish ejb ant部署
- ejb glassfish messageDrivenBean
- 官方EJB GlassFish FAQ 中文版
- Glassfish 中 EJB 常见问题解答
- 客户端调用EJB对象的基本步骤
- 笔记:Java 性能优化权威指南 第9、10、11章 GlassFish、Web应用、Web Service、EJB性能调优
- 开发EJB项目中WebService 调用问题
- java.net.SocketException: Permission denied: connect
- 我为什么要写编程教程?
- log4j的几种常用配置
- 选择你的Docker管理工具:Kubernetes或Swarm
- iOS PHCollectionList详解
- Glassfish不同WEB项目调用ejb对象
- jQuery Ajax 实例 ($.ajax、$.post、$.get)
- 盗梦空间
- Android系统--输入系统(十四)Dispatcher线程情景分析_dispatch前处理
- Cause: java.sql.SQLException: ORA-01841: (完整) 年份值必须介于 -4713 和 +9999 之间, 且不为 0
- 已解决:HorizontalScrollView的setScrollViewListener方法不兼容低版本的问题
- 1022. D进制的A+B (20)
- 块级元素和行内元素的区别
- mongo find 详解