Tag: ejb 3.0

JPA实体没有主键?

我有一个实体类: @Entity @Table(name=”CMC_MAP_SERVER_INFO”) @NamedQuery(name=”CmcMapServerInfo.getMapServer”, query=”SELECT c FROM CmcMapServerInfo c”) public class CmcMapServerInfo implements Serializable { private static final long serialVersionUID = 1L; @Column(name=”APPLICATION_NAME”) private String applicationName; private String remarks; @Column(name=”SERVER_IP”) private String serverIp; @Column(name=”SERVER_NAME”) private String serverName; @Column(name=”SERVER_PORT”) private short serverPort; public CmcMapServerInfo() { } 我收到以下错误: Entity class [class cdot.oss.cmsat.conf.ejb.entity.CmcMapServerInfo] has no primary key specified. […]

使用EJB3.1进行logback

我正在使用logback / slf4j来处理我的应用程序中的日志记录。 在我开始使用EJB之前,一切都运行良好。 一旦我将无状态EJB添加到我的应用程序,记录器就开始忽略我的logback.xml并停止使用我的appender。 我切换到程序化记录器配置以查看错误,现在当我尝试在EJB中使用我的记录器时,我收到以下错误: org.slf4j.impl.JDK14LoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext 来自这条线: LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); 是否需要任何特殊配置才能使回归与EJB一起使用? 如果重要的话,我正在使用glassfish v3进行部署。

调用entityManager.getTransaction()时的EJBException

这可能是微不足道的,但我会喜欢一些帮助。 我明白了: javax.ejb.EJBException: java.lang.IllegalStateException: Illegal to call this method from injected, managed EntityManager 11:54:37,105 ERROR [STDERR] at org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.java:77) 11:54:37,105 ERROR [STDERR] at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:83) 11:54:37,105 ERROR [STDERR] at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:190) 做的时候: @PersistenceContext(unitName = “someName”) private EntityManager em; … final EntityManager entityManager = getEntityManager(); final EntityTransaction tx = entityManager.getTransaction(); // here 谁能告诉我原因可能是什么?

在@Table(name =“tableName”)中 – 使“tableName”成为JPA中的变量

我正在使用JPA,我需要将“tableName”变为变量。 在数据库中,我有很多表,我的代码需要访问我指定要读取的表。 @Entity @Table(name = “tableName”) public class Database implements Serializable {……………} 有任何想法吗?

了解EJB3 / JPA容器级事务和隔离级别

考虑一下我正在使用的一些代码的简化视图: @Stateless(…) @Remote(…) @TransactionAttribute(TransactionAttributeType.MANDATORY) public class FirstEjbType { @EJB(…) private SecondEjbType secondEjb; @EJB(…) private ThirdEjbType thirdEjb; public void doSomething() { secondEjb.doSomething(); // WRITES SOMETHING TO THE DATABASE thirdEjb.doSomething(); // CAN’T SEE THAT SOMETHING IN THE DATABASE! } 我已经在类级别将TransactionAttribute注释设置为MANDATORY 。 我理解这意味着必须在提供的事务中调用所有方法,如doSomething() 。 在这种情况下,我们使用容器管理的事务。 在SecondEjbType或ThirdEjbType中SecondEjbType不使用TransactionAttribute ……在类和方法级别都没有。 我理解这意味着secondEjb.doSomething()和thirdEjb.doSomething()都将在为firstEjb.doSomething()提供的事务中运行。 但是,我真的错过了什么 ! 如代码注释所示…… secondEjb将数据写入数据库, thirdEjb将该数据作为其操作的一部分进行读取。 由于所有这些都在同一个事务中运行,我不希望隔离级别存在任何问题。 但是,无论出于何种原因, secondEjb数据库写入对thirdEjb不可见。 我已经将跟踪一直转到最大值,并且显然没有exception或错误或回滚问题……初始写入对于后续读取是不可见的。 我并不是自称是世界上最伟大的交易管理大师……我是否错过了一些明显的东西,或者我的概念理解是否基本正确,问题可能在其他地方? […]

无状态会话bean中的multithreading?

EJB 3.0规范不允许无状态会话bean的业务方法创建新线程。 这是为什么? 创建仅执行原始计算并且从不调用应用程序服务器的其他工作线程有什么问题? 比如说,我的会话bean实现了一个允许用户上传图像的服务,而业务方法对这些图像进行了cpu密集型图像处理。 那么即使机器有8个或更多核心,它也只能使用一个cpu核心来完成这项工作? 如果我利用第三方图像处理库,在内部创建工作线程,我也会违反EJB规范,即使该库和这些线程根本与EJB容器无关。 这似乎不对。 如果我忽略EJB规则并仍然创建一些工作线程来进行cpu密集处理会发生什么? 当然这些线程永远不会触及任何app服务器对象,bean线程会在返回之前加入它们。 还能发生什么坏事吗?

如何从EJB 3访问文件系统?

我想知道如何从EJB 3 bean访问文件系统? 我在互联网上搜索了这个主题,并没有找到一个好的答案。 有人建议使用java.io/java.nio,即使规范禁止这种用法。 大多数应用程序服务器似乎都允许访问此API。 另一个想法是使用JCA连接器来访问文件系统或LDAP目录。 我想这样做是为了避免在数据库中使用BLOB,因为在性能和使用的资源方面,简单文件是一个更好的解决方案。 你怎么解决这个问题?

可以使用@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名称,但我无法弄清楚映射的注释。 谢谢!

最新的unit testing框架EJB3 / JPA

使用EJB 3 / JPA启动新项目,主要是无状态会话bean和批处理作业。 我过去在标准的Java webapps上使用过JUnit,它看起来效果很好。 在EJB2中,unit testing很痛苦,并且需要一个运行容器(如JBoss)来进行调用。 既然我们将在EJB3 / JPA中工作,我想知道公司正在使用什么来编写和运行这些测试。 Junit和JMock是否仍然被认为是相关的,还是有其他新的框架,我们应该调查?

EJB 3注入spring bean

我已经制作了一个带有弹簧,弹簧安全性的mavenized Web应用程序……现在,我想添加ejb模块进行数据库访问,我在互联网上查找但是我没有找到清楚的东西,因为这是我第一次使用EJB。 我想在我的控制器中使用像@EJB这样的东西,比如“ @Stateless(name = “CustomerServiceImpl”) public class CustomerServiceImpl implements CustomerService @EJB private MyEjb myEjb; 如果有教程或任何其他帮助,如何在spring上下文中配置它。 这将是伟大的,谢谢你