Tag: ejb 3.1

Jetty 8 + EJB 3.1 + JTA + CDI + JPA 2堆栈?

任何人都可以告诉我,目前是否可以通过Jetty“粘合”部分Java EE 6 Web配置文件? 我发现了很多关于将独立EJB 3容器,JTA提供程序等与旧Jetty版本集成的文章,所以如果我可以将它们全部协同工作,我就会更加努力。 我想组装一个Servlet 3.0 + CDI + EJB 3.1 + JTA(如果需要,我真正想要的是声明式事务管理)+ Jetty 8上的JPA 2环境(如果没有可用的Jetty替代品,则为Tomcat 7)。 我的问题是:可以做到吗? 有人设法做到了吗? 有关获取OpenEJB,Atomikos,Weld,EclipseLink和Jetty(或任何其他类似堆栈)一起工作的任何文章? 那里有任何神奇的“全部”pom.xml文件? PS:是的,我知道我可以使用GlassFish(我非常喜欢)。 我只是想知道如何使用Servlet容器获得类似的function,以及两个环境在复杂性,性能,大小,部署速度,硬件资源消耗等方面的比较。

EJB 3.1容器管理并发与同步

我已经开始阅读有关单例会话bean和用于使用容器管理并发的注释。 与简单地使用’synchronized’关键字相比,我没有看到这样的好处,所以我怀疑有一些重要的东西我不知道。 从Rubinger&Burke,O’Reilly的书“ Enterprise JavaBeans 3.1 ”中考虑这个例子: @javax.ejb.Lock(javax.ejb.LockType.READ) public String concurrentReadOnlyMethod(){…} @javax.ejb.Lock(javax.ejb.LockType.WRITE) public void allowOnlyOneWriteAtATimeMethod(String stringToSet){…} 这比在read-case和在write-case中使用synchronized关键字更好地省略注释更好,如下所示: public String concurrentReadOnlyMethod(){…} public synchronized void allowOnlyOneWriteAtATimeMethod(String stringToSet){…}

是否可以在应用程序代码之外配置EJB 3.1 @Schedule?

如何配置计划间隔: @Schedule(persistent=true, minute=”*”, second=”*/5″, hour=”*”) 在应用程序代码之外? 如何在ejb-jar.xml中配置它? 我可以在应用程序之外配置它(属性文件的种类)吗?

如何在Tomcat 5.5.x中进行EJB 3.1部署

我有支持的托管计划 i)Tomcat – 5.5.xSupport ii)JDK – 1.6.x支持 iii)JSP / servlet – 2.0支持 我可以在此设置上部署EJB 3.1吗? 我听说Tomcat不支持EJB,但希望有一种解决方法。 任何建议表示赞赏。

需要澄清JMS与ActiveMQ bean /资源配置

在如何使用JMS资源以及在@MessageDriven注释上使用适当的@ActivationConfigProperty设置activationConfig似乎存在一些不一致。 首先,这是我的资源配置( glassfish-resources.xml ,但可以翻译成其他部署描述符)。 这适用于Glassfish( asadmin add-resources glassfish-resources.xml )以及ActiveMQ资源适配器 : MyApp JMS Queue MyApp Connection Factory 这是我的消息提供者bean。 您会注意到找到了JNDI名称并且使用了ActiveMQ资源而没有错误,消息被发送到正确的队列: @Stateless @LocalBean public class ServicesHandlerBean { @Resource(mappedName = “jms/queue/myApp”) private Queue queue; @Resource(mappedName = “jms/factory/myApp”) private ConnectionFactory factory; public void sendJMSMessage(MessageConfig messageData) throws JMSException { Connection connection = null; Session session = null; try { connection = […]

使用EJBContext getContextData – 这样安全吗?

我打算使用EJBContext将一些属性从应用程序层(特别是消息驱动的bean)传递给持久性生命周期回调,该回调无法直接注入或传递参数(EclipseLink中的会话侦听器,实体生命周期回调等) ,该回调是通过JNDI获取EJBContext 。 这似乎工作,但有任何隐藏的陷阱,如我缺少的线程安全或对象寿命? (假设传递的属性值是不可变的,如String或Long。) 示例bean代码 @MessageDriven public class MDB implements MessageListener { private @Resource MessageDrivenContext context; public void onMessage(Message m) { context.getContextData().put(“property”, “value”); } } 然后是使用EJBContext的回调 public void callback() { InitialContext ic = new InitialContext(); EJBContext context = (EJBContext) ic.lookup(“java:comp/EJBContext”); String value = (String) context.getContextData().get(“property”); } 我想知道的是,我可以确定contextData映射内容只对当前调用/线程可见吗? 换句话说,如果两个线程同时运行callback方法,并且都从JNDI查找EJBContext ,它们实际上获得了不同的contextData映射内容? 而且,这实际上是如何工作的 – 从JNDI查找返回的EJBContext最终是一个ThreadLocal的结构的包装器对象?

我可以(以及如何)使用EJB模块中的javax.naming.Context#lookup查找CDI托管bean吗?

我可以(如果是这样,如何?)在EJB模块中使用javax.naming.Context#lookup查找CDI托管bean? 我正在使用GlassFish v3。 我想我可以使用@Named ,但是什么是CDI托管bean的JNDI名称? 我想从非托管POJO中查找它们,所以我不能使用@Inject 。

可以使用@Resource在EJB3.0中注入原语吗?

使用Glassfish,我可以设置一个字符串jndi条目: JNDI名称:“com / xyzcompany / echo / EchoServiceBean / viewName” 工厂类:org.glassfish.resources.custom.factory.PrimitivesAndStringFactory 属性:value =“Testing123” 然后我可以将这个容器配置的字符串注入我的EJB: @Resource(lookup =“com / xyzcompany / echo / EchoServiceBean / viewName”) String viewName; lookup =似乎在内部执行InitialContext.lookup(…)。 但是,这使用ejb3.1,但不幸的是我的prod环境只有ejb3.0。 我想我想弄清楚是否有办法使用@Resource(name =)或@Resource(mappedName =)来做类似的事情? name =似乎是特定于应用程序的,所以我应该能够以某种方式将相对名称映射到全局JNDI名称,但我无法弄清楚映射的注释。 谢谢!

设置/配置EJB Timer Service的DataSource

我正在尝试在我的应用程序中使用EJB 3.1中的Timer Service。 @Stateless @LocalBean public class StatelessTimerSessionBean { @Schedule(minute = “*”, second = “0”, dayOfMonth = “*”, month = “*”, year = “*”, hour = “9-17”, dayOfWeek = “Mon-Fri”) public void myTimer() { System.out.println(“Timer event: ” + new Date()); } } “..将EJB Timer Service的Timer DataSource设置设置为有效的JDBC资源..” 来自EJB计时器服务 我无法弄清楚如何正确配置Timer Datasource? 部署时出现的错误是: SEVERE: Exception while invoking class […]

JavaEE6 DAO:应该是@Stateless还是@ApplicationScoped?

我目前正在创建一个EJB3数据访问类来处理我的Java EE 6应用程序中的所有数据库操作。 现在,由于Java EE 6提供了新的ApplicationScoped-Annotation,我想知道我的EJB应该具有什么状态,或者它应该是无状态的。 让DAO成为@Stateless会话Bean或@ApplicationScoped Bean会更好吗? @Singleton怎么样? 这些与DAO相关的选项有何不同? 编辑:我正在使用Glassfish 3.0.1与完整的Java EE 6平台