[TxPolicy] javax.ejb.EJBTransactionRolledbackException: Wrong target. class com.sample.mock.service.MockFinanceService for public long com.sample.mock.service.MockFinanceService.createFinancialTransaction(com.sample.mock.service.params.MockFinanceTrasactionParam)
我的无状态bean类是:
@Stateless(mappedName = "MockFinanceService")
public class MockFinanceService implements MockFinanceServiceLocal {
....
}
本地界面是:
@Local
public interface MockFinanceServiceLocal {
public long createFinancialTransaction(MockFinanceTrasactionParam mockFinanceTrasactionParam);
}
我正在按如下方式调用该服务:
MockFinanceServiceLocal mockFinanceServiceLocal = (MockFinanceServiceLocal) new InitialContext().lookup("FinanceEAR/MockFinanceService/local");
......
mockFinanceServiceLocal.createFinancialTransaction(mockFinanceTrasactionParam);
请帮我理解错误。
答案 0 :(得分:1)
在使用@Local
接口时,某些JBoss版本中存在一个产生此错误的错误,并且服务器配置为通过引用传递值。如果是这种情况,则只需使用@Remote
代替@Local
即可。请参阅:https://access.redhat.com/site/solutions/28349
您是否有手动进行查找的原因?你不能注入EJB吗?
@EJB
private MockFinanceServiceLocal mockFinanceServiceLocal;
public void myAction() {
// ...
mockFinanceServiceLocal.createFinancialTransaction(mockFinanceTransactionParams);
}
此外,您将问题标记为jboss-seam
相关。你的问题中没有任何内容,或与之相关的问题,与Seam有关......
答案 1 :(得分:0)
您的错误表明您在此行中遇到问题
mockFinanceServiceLocal.createFinancialTransaction(mockFinanceTrasactionParam);
什么是mockFinanceTrasactionParam
? 在哪里定义?
答案 2 :(得分:0)
原因是我的应用程序有一个Ear scoped类加载器设置。否则,本地引用甚至可以在同一服务器上部署的不同耳朵上工作。