Java 从EJBContext检索UserTransaction时出错,引发IllegalStateException
我试图在WebSphere8.5中部署一个应用程序,该应用程序可以正确部署,但在尝试对EJBContext的UserTransaction进行对象化时,我遇到了一个异常Java 从EJBContext检索UserTransaction时出错,引发IllegalStateException,java,jersey,websphere,illegalstateexception,Java,Jersey,Websphere,Illegalstateexception,我试图在WebSphere8.5中部署一个应用程序,该应用程序可以正确部署,但在尝试对EJBContext的UserTransaction进行对象化时,我遇到了一个异常 This is my code: @Stateless @TransactionManagement(TransactionManagementType.BEAN) @TransactionAttribute(TransactionAttributeType.SUPPORTS) public class FooManagerBe
This is my code:
@Stateless
@TransactionManagement(TransactionManagementType.BEAN)
@TransactionAttribute(TransactionAttributeType.SUPPORTS)
public class FooManagerBean implements FooManager {
@Resource
private EJBContext context;
public FooManagerBean() {
}
//other methods
/**
* {@inheritDoc}
*/
@Override
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public FooResponseDTO fooMethod(FooRequestDTO fooRequest) throws Exception {
final UserTransaction userTx = context.getUserTransaction(); <- EXCEPTION!
//other code & return
return ...;
}
这是我的代码:
@无国籍
@TransactionManagement(TransactionManagementType.BEAN)
@TransactionAttribute(TransactionAttribute.SUPPORTS)
公共类FooManagerBean实现FooManager{
@资源
私有EJBContext上下文;
公共FooManagerBean(){
}
//其他方法
/**
*{@inheritardoc}
*/
@凌驾
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public FooResponseDTO fooMethod(FooRequestDTO fooRequest)引发异常{
final UserTransaction userTx=context.getUserTransaction();您混淆了两种事务管理方法。要么声明定义BEAN将管理事务的TransactionManagementType.BEAN
,要么使用需要容器管理事务的TransactionAttribute.XXX
。因此,要么删除getUserTransaction()
method call或remove transaction attributes。顺便说一句,您想归档什么?非常感谢,我的问题是我用java 1.8版创建了ear,而不是1.6版。我已经更改了版本,部署时没有出现此错误。@Gas