ejb 2.0 3.0_Java EE 6测试第I部分– EJB 3.1可嵌入API

ejb 2.0 3.0

我们从Enterprise JavaBeans开发人员那里听到的最常见的请求之一就是需要改进的单元/集成测试支持。
EJB 3.1规范引入了EJB 3.1可嵌入API,用于在Java SE环境中执行EJB组件。

与传统的基于Java EE服务器的执行不同,可嵌入式用法允许客户端代码及其对应的企业bean在同一JVM和类加载器中运行。 这为测试,脱机处理(例如批处理)以及在桌面应用程序中使用EJB编程模型提供了更好的支持。
[…]可嵌入的EJB容器为托管环境提供了对Java EE运行时中存在的相同基本服务的支持:注入,对组件环境的访问,容器管理的事务等。通常,企业bean组件不了解他们在其中运行的一种托管环境。 这使得企业组件在各种测试和部署方案中都具有最大的可重用性,而无需进行大量的返工。

让我们来看一个例子。

首先创建一个Maven项目,然后添加可嵌入的GlassFish依赖项。
我选择使用TestNG测试框架,但JUnit应该也能正常工作。

<dependencies><dependency><groupId>org.glassfish.extras</groupId><artifactId>glassfish-embedded-all</artifactId><version>3.1.2</version><scope>test</scope></dependency><dependency><groupId>org.testng</groupId><artifactId>testng</artifactId><version>6.4</version><scope>test</scope></dependency><!--The javaee-api is stripped of any code and is just used tocompile your application. The scope provided in Maven meansthat it is used for compiling, but is also available whentesting. For this reason, the javaee-api needs to be belowthe embedded Glassfish dependency. The javaee-api can actuallybe omitted when the embedded Glassfish dependency is included,but to keep your project Java-EE 6 rather than GlassFish,specification is important.--><dependency><groupId>javax</groupId><artifactId>javaee-api</artifactId><version>6.0</version><scope>provided</scope></dependency>
</dependencies>

这是一个简单的Stateless会话Bean:

@Stateless
public class HelloWorld {public String hello(String message) {return "Hello " + message;}
}

它通过无接口视图公开业务方法。
它没有可用于嵌入执行的特殊API。

这是一些在可嵌入容器中执行Bean的测试代码:

public class HelloWorldTest {private static EJBContainer ejbContainer;private static Context ctx;@BeforeClasspublic static void setUpClass() throws Exception {// Instantiate an embeddable EJB container and search the// JVM class path for eligible EJB modules or directoriesejbContainer = EJBContainer.createEJBContainer();// Get a naming context for session bean lookupsctx = ejbContainer.getContext();}@AfterClasspublic static void tearDownClass() throws Exception {// Shutdown the embeddable containerejbContainer.close();}@Testpublic void hello() throws NamingException {// Retrieve a reference to the session bean using a portable// global JNDI nameHelloWorld helloWorld = (HelloWorld)ctx.lookup("java:global/classes/HelloWorld");// Do your testsassertNotNull(helloWorld);String expected = "World";String hello = helloWorld.hello(expected);assertNotNull(hello);assertTrue(hello.endsWith(expected));}
}

源代码在GitHub上的ejb31-embeddable文件夹下可用。

有关JPA示例的分步教程,请阅读使用嵌入式EJB容器从NetBeans文档测试企业应用程序 。

尽管此新API向前迈了一大步,但我仍然对这种方法有疑问:您正在将容器进行测试。 这需要一个与您的生产环境不同的专用容器。

在Java EE 6测试第二部分中 ,我将介绍Arquillian和ShrinkWrap 。
Arquillian是一个强大的面向容器的测试框架,位于TestNG和JUnit之上,使您能够在您选择的容器上创建生产环境,并仅在该环境中执行测试(使用数据源,JMS目标以及许多其他工具)。您希望在生产环境中看到的其他配置)。 Arquillian不会将测试引入运行时,而是将您的测试引入了运行时。

相关文章

  • Java EE 6测试第二部分– Arquillian和ShrinkWrap简介
  • Maven 2 Cobertura插件–更新
  • 单元测试JBoss 5服务
  • 条带框架和EJB3
  • Maven 2 Cobertura插件
  • 上一篇文章:使用jQuery更改URL参数
  • 下一篇文章:Java EE 6测试第二部分– Arquillian和ShrinkWrap简介

参考: Java EE 6测试第I部分–来自我们JCG合作伙伴 Samuel Santos的EJB 3.1可嵌入API ,位于Samaxes博客上。


翻译自: https://www.javacodegeeks.com/2012/06/java-ee-6-testing-part-i-ejb-31.html

ejb 2.0 3.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何添加自动更新Play Framework 2.X项目的版本号

我想拥有要发布新版本时自动更新的版本号&#xff0c;因此我着手了解如何使用Play Framework进行此操作。 我发现我可以将其基于sbt-release插件&#xff0c;但是并不是那么简单。 这是我的策略&#xff0c;因此最后我要做的就是运行“ activator release ”&#xff1a; 1.添…

JS容易犯错的this和作用域

var someuser { name: byvoid, func: function() {console.log(this.name); }}; var foo { name: foobar};someuser.func(); // 输出 byvoidfoo.func someuser.func; foo.func(); // 输出 foobarname global;func someuser.func; func(); // 输出 global在 JavaScript 中,…

【原创】Linux安装Redis

【注】说是原创其实是从各个博客中copy出来的&#xff0c;不过经本人总结&#xff0c;也算是半个原创吧&#xff0c;哈哈... 1.安装环境&#xff1a; 2.安装步骤 2.1 安装目录 cd /usr/local mkdir redis 2.2 下载包 wget http://download.redis.io/releases/redis-3.2.11.tar…

前端:屏蔽F12审查元素,禁止修改页面代码

一、屏蔽F12 审查元素 document.onkeydown function(){if(window.event && window.event.keyCode 123) {alert("F12被禁用");event.keyCode0;event.returnValuefalse; } if(window.event && window.event.keyCode 13) {window.event.keyCode 50…

SDN第四次作业

ryu控制器 ryu架构清晰&#xff0c;支持OpenFlow全部版本&#xff0c;采用Python语言进行APP开发。其上层为OpenStack和Web提供了编程接口,中间为Ryu自行研发的应用组件,最下层为Ryu底层实现的基本组件。 onos控制器 onos是面向运营商网络的SDN操作系统&#xff0c;采用java语言…

resteasy_RESTEasy教程第2部分:Spring集成

resteasyRESTEasy提供了对Spring集成的支持&#xff0c;这使我们能够将Spring bean作为RESTful WebServices公开。 步骤&#xff03;1&#xff1a;使用Maven配置RESTEasy Spring依赖项。 <project xmlnshttp:maven.apache.orgPOM4.0.0 xmlns:xsihttp:www.w3.org2001XMLSche…

前端代码加密

虽然浏览器会把加密的代码破解在解析&#xff0c;但是还是可以稍微加密&#xff0c;或者人家就是破解不了呢哈哈哈哈&#xff01;&#xff01;&#xff01; 1、脚本之家 推荐&#xff1a;HTML原代码加、解密脚本 https://www.jb51.net/tools/html_jiami.htm CSS代码格式化和…

原型链继承

转载于:https://www.cnblogs.com/cmblog/p/8079773.html

清洁责任–摆脱均等,compareTo和toString

您是否看过Java中Object类的javadoc&#xff1f; 大概。 您倾向于时不时地到达那里&#xff0c;然后沿着继承树进行挖掘。 您可能已经注意到的一件事是&#xff0c;每个类都必须继承许多方法。 实现自己而不是坚持使用原始方法的最喜欢的方法可能是.toString&#xff08;&#…

密码保护

1.更新User对象&#xff0c;设置对内的_password class User(db.Model): __tablename__ user _password db.Column(db.String(200), nullableFalse) #内部使用 2.编写对外的password from werkzeug.security import generate_password_hash, check_password_hash property d…

linux 安装wdcp控制面板

**wdCP是WDlinux Control Panel的简称,**是一套通过WEB控制和管理服务器的Linux服务器管理系统以及虚拟主机管理系统。 可以查看服务器情况,资源利用率,系统负载,内存使用率,带宽使用率&#xff1b; 可以轻松创建网站,开站点,发布网站,创建FTP,创建mysql数据库&#xff1b; 可以…

9.proc目录下的文件和目录详解

1./proc目录下的文件和目录详解 /proc:虚拟目录.是内存的映射,内核和进程的虚拟文件系统目录,每个进程会生成1个pid&#xff0c;而每个进程都有1个目录. /proc/Version:内核版本 /proc/sys/kernel:系统内核功能 /proc/sys/net/ipv4: /proc/meminfo:系统内存信息,free -m /proc/…

java线程死锁_Java线程死锁–案例研究

java线程死锁本文将描述从在IBM JVM 1.6上运行的Weblogic 11g生产系统中观察到的最新Java死锁问题的完整根本原因分析。 此案例研究还将证明掌握线程转储分析技能的重要性&#xff1b; 包括用于IBM JVM Thread Dump格式。 环境规格 – Java EE服务器&#xff1a;Oracle Weblo…

JS实现禁止浏览器后退返回上一页

<script type"text/javascript"> $(function() {//防止页面后退history.pushState(null, null, document.URL);window.addEventListener(popstate, function () {history.pushState(null, null, document.URL);});}) </script>

网页中文乱码--UTF-8和GB2312互转

一、如果你想把utf-8转为GB2312 1、用记事本打开源码&#xff0c;把换成&#xff1b;如果是JS不需要加这句&#xff0c;如果是网页最好加上这句和你页面对应的编码。 2、用记事本打开源码&#xff0c;另存为&#xff0c;编码 哪里选择 ANSI 即可。 二、如果你想把GB2312转为…

将JAR依赖项添加到Eclipse插件Maven Tycho构建

开发OPP项目时&#xff0c;一直困扰着我的是使用硬编码Java库依赖项。 我手动下载了所用库的jar &#xff0c;将其复制到需要它们的插件中的目录中&#xff0c;然后将其添加到MANIFEST.MF文件中。 您可能会问我为什么要这样做。 好吧&#xff0c;Eclipse插件&#xff08;或更正…

如何查看一个网站是否部署了SSL证书?

如何才能确定一个网站是否部署了安全的SSL证书呢&#xff1f; 答&#xff1a;能用https方式访问的站点 如果此网站部署SSL证书&#xff0c;则在需要加密的页面会自动从 http:// 变为 https:// &#xff0c;如果没有变&#xff0c;你认为此页面应该加密&#xff0c;您也可以尝试…

页面加载时模块移入动画---wow

首先官网下载&#xff1a;https://github.com/matthieua/WOW animate.css wow.js 1&#xff0c;在头部引用animate.css <link rel"stylesheet" href"css/animate.css">2&#xff0c;body底部引入wow.js 且初始化一下 <script src"js/wow.…

人工智能的概念和知识构架_概念验证:玩! 构架

人工智能的概念和知识构架我们正在开始一个新项目&#xff0c;我们必须选择Web框架。 我们的默认选择是grails&#xff0c;因为团队已经拥有使用它的经验&#xff0c;但是我决定给Play&#xff01; 和Scala有机会。 玩&#xff01; 有很多很酷的东西&#xff0c;在我的评估中&a…

团队-科学计算器-模块测试过程

项目托管平台地址&#xff1a;https://gitee.com/mamamayun/KeXueJiSuanQia/tree/master/calculator_soul3.5 模块测试:进行加减乘除运算 测试方法:反复进行计算 其他补充说明: 无 转载于:https://www.cnblogs.com/dunianze/p/8092874.html