Tag: ejb 3.1

无法运行arquillian测试

我正在尝试使用Arquillian进行一些unit testing,但是我无法找到使用Maven部署时失败的原因。 这是class级考试: package com.ndeveloper.spec.test; import javax.inject.Inject; import junit.framework.Assert; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.shrinkwrap.api.ArchivePaths; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.asset.ByteArrayAsset; import org.jboss.shrinkwrap.api.spec.JavaArchive; import org.junit.Test; import org.junit.runner.RunWith; import com.ndeveloper.spec.controller.GreetingBean; @RunWith(Arquillian.class) public class GreetingBeanTest { @Inject GreetingBean greetingBean; @Deployment public static JavaArchive createTestArchive() { return ShrinkWrap.create( JavaArchive.class,”test.jar”). addClass(GreetingBean.class).addAsManifestResource( new ByteArrayAsset(“”.getBytes()), ArchivePaths.create(“beans.xml”)); } @Test public void testInjection(){ Assert.assertEquals(“Hello World”, […]

当CDI注入POJO应该有效吗? (GlassFish v3)

当我将EJB 3.1 bean注入由@Inject创建的POJO时,注入工作。 当我自己构建POJO时,它不会(Glassfish v3)。 这是正确的行为吗? 我的类(在EJB模块中): @Singleton @LocalBean @Startup @Named public class NewSingletonBean { @PostConstruct public void init(){ System.out.println(“NewSingletonBean INIT”); } } _ public class MyPOJO { @Inject NewSingletonBean newSingletonBean; public void sth(){ System.out.println(“EJB injected into POJO: ” + (newSingletonBean != null)); } } 这不起作用 : @Singleton @LocalBean @Startup @DependsOn(value=”NewSingletonBean”) public class NewSingletonBean2 { […]

如何让这个定时器服务类处理“预定时间的变化”?

示例代码: @Singleton @Startup public class EBlastScheduler { @Resource TimerService timerService; EBlastScheduler what = new EBlastScheduler(); @PostConstruct public void initialize(){ if (timerService.getTimers() != null) { for (Timer timer : timerService.getTimers()) { if (timer.getInfo().equals(“EBlastScheduler”)){ timer.cancel(); } } } ScheduleExpression expression = new ScheduleExpression(); expression.second(“*/1”).minute(“*”).hour(“*”); timerService.createCalendarTimer(expression); } @Timeout public void execute(Timer timer){ System.out.println(“—-Invoked: ” + System.currentTimeMillis()); } } […]

dependency injectionResourceFilter不起作用?

我有一堆JAX-RS资源,为新的WebService提供API。 为了理解发生了什么,我想将有关每个请求的信息存储在数据仓库中。 在我看来,这是一个跨领域关注的完美例子,可以由ResourceFilter实现,对吗? 所以我构建了一个DataWarehouseService ,它应该在DB中存储东西: @Stateless @LocalBean public class DataWarehouseService { public void logApiCall(ContainerRequest cr) { // get interesting fields from request, store in DB … } } 这是我的filter: public class LoggingResourceFilter implements ResourceFilter { Logger log = Logger.getLogger(this.getClass().getName()); @EJB DataWarehouseService dwh; @Override public ContainerRequestFilter getRequestFilter() { return new ContainerRequestFilter() { @Override public ContainerRequest filter(ContainerRequest […]

EJB 3.1 API的Maven存储库

我可以将什么Maven存储库用于EJB 3.1 API依赖?

部署为WAR-only的EJB 3.1应用程序:ejb-jar.xml怎么样?

我有一个JavaEE6应用程序,由Web东西和EJB组成,并且部署为仅使用WAR(使用EJB3.1)。 构建基于Maven。 我刚刚读到了在Java EE 6中订购模块初始化的新可能性,这也是我的应用程序所需要的。 此外,我想有一个选项来定义XML中的一些EJB属性。 由于该示例部署为EAR项目,因此订单在application.xml中定义。 但是在WAR部署的项目中,没有application.xml。 现在我想知道我在哪里可以定义这样的信息? 或者是否可以在WAR-deployed-app中以某种方式使用application.xml? 编辑: 哎呀我没有正确阅读模块顺序示例,在第一时间我认为它是关于我的应用程序中的EJB加载的顺序。 当然我的WAR-app中只有一个模块,所以排序没有意义。 好的,但正如我所说,一个大问题仍然存在(也改变了问题标题以反映变化):ejb-jar.xml怎么样? 我可以用XML以某种方式定义关于我的EJB的东西(因为它对某些设置有用,以避免重新编译)?

EJB3.1系统exception与javax.ejb.EJBException

在提出我的问题之前,只是关于EJB3.1exception的一些背景知识 – 应用程序例外包括 用户定义的具有@ApplicationException注释的已检查或未检查的exception 所有已检查的例外 java.lang.Exception&它的子类exception 除了java.rmi.RemoteException和它的子类exception 系统例外包括 java.rmi.RemoteException和它的子类exception 所有未经检查的例外情况 java.lang.RuntimeException和它的子类exception java.lang.Error和它的子类exception 以下是我在本书中读到的声明 在EJB系统中,客户端不会例外,当遇到此类exception时,这些exception不会按原样传递给客户端,而是在javax.ejb.EJBException中包含。 我的问题 – 上面描述的所有应用程序exception是否应该由EJB直接抛给客户端? 如果在抛出到客户端之前将系统exception包装在javax.ejb.EJBException中,那么javax.ejb.EJBException是否被视为系统exception?

可以在运行时为@Schedule注释更改ejb参数吗?

对于有ejb经验的人来说可能是一个愚蠢的问题…… 我想通过@Schedule注释为我的一个使用Java EE调度程序的EJB bean动态读取和更改minute参数。 任何人都知道如何在运行时执行此操作,而不是像下面那样在类中对其进行硬编码? 如果我以编程方式执行此操作,我仍然可以使用@Schedule注释吗? @Schedule(dayOfWeek = “0-5”, hour = “0/2”, minute = “0/20”, timezone = “America/Los_Angeles”) private void checkInventory() { }

使用Maven 2和Glassfish 3对EJB进行unit testing

我一直在尝试设置我的应用程序,以便我可以整天测试它的EJB,但我似乎无法通过看似简单的问题。 我在NetBeans 6.9中设置了标准的Maven Web应用程序。 我已经自动为其中一个EJB生成了unit testing,但每当我去运行它时,我都会收到错误消息: Testcase: initializationError(com.example.ExampleTest): Caused an ERROR Absent Code attribute in method that is not native or abstract in class file javax/ejb/embeddable/EJBContainer java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/ejb/embeddable/EJBContainer at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.defineClass(ClassLoader.java:616) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 我已经研究了这个,我很确定问题是我的pom当前指向一个只包含API的jar javax javaee-web-api 6.0 […]

将默认应用程序上下文匿名传递给远程EJB

我有一个复杂的场景,我不知道如何去做: 我让我的ejbs在远程服务器上运行。 我的Web应用程序在不同的服务器上运行。 我有一个ApplicationContext,它将根据域,语言,国家等而有所不同。 我希望将此应用程序上下文匿名传递给远程EJB,这样开发人员就不必使用ApplicationContext作为参数调用所有后端请求。 这是scenarion,让我说我有一个远程无状态EJB: @Stateless public class MyStateless implements MyStatelessRemote{ //The application context that needs to be supplied form the front-end @Inject //probably define a producer method to always supply a new one. private ApplicationContext applicationContext; public void doCheckSomething(final MySomethingData data){} } 在前端: @SessionScoped @Named public class MyController implements Serializable{ @EJB private MyStatelessRemote […]