[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 {
....
}
本地接口(interface)是:
@Local
public interface MockFinanceServiceLocal {
public long createFinancialTransaction(MockFinanceTrasactionParam mockFinanceTrasactionParam);
}
我按如下方式调用该服务:
MockFinanceServiceLocal mockFinanceServiceLocal = (MockFinanceServiceLocal) new InitialContext().lookup("FinanceEAR/MockFinanceService/local");
......
mockFinanceServiceLocal.createFinancialTransaction(mockFinanceTrasactionParam);
请帮助我了解问题所在。
最佳答案
某些 JBoss 版本中存在一个错误,当使用 @Local
接口(interface)并且服务器配置为通过引用传递值时,会产生此错误。如果是这种情况,那么只需使用 @Remote
而不是 @Local
就可以了。请参阅:https://access.redhat.com/site/solutions/28349
您手动进行查找有什么原因吗?不能注入(inject)EJB吗?
@EJB
private MockFinanceServiceLocal mockFinanceServiceLocal;
public void myAction() {
// ...
mockFinanceServiceLocal.createFinancialTransaction(mockFinanceTransactionParams);
}
此外,您将问题标记为与 jboss-seam
相关。您的问题或与之相关的问题中没有任何内容与 Seam 相关......
关于java - EJB 本地调用出现错误目标异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16520350/