0
[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);

请帮助我了解问题所在。

4

3 回答 3

1

某些 JBoss 版本中有一个错误,在使用@Local接口时会产生此错误,并且服务器配置为通过引用传递值。如果是这种情况,那么简单地使用@Remote而不是@Local应该工作。请参阅:https ://access.redhat.com/site/solutions/28349

您手动进行查找是否有原因?你不能注入EJB吗?

@EJB
private MockFinanceServiceLocal mockFinanceServiceLocal;

public void myAction() {
    // ...
    mockFinanceServiceLocal.createFinancialTransaction(mockFinanceTransactionParams);
}

此外,您将问题标记为jboss-seam相关。您的问题或与之相关的问题中没有任何内容与Seam相关...

于 2013-05-24T14:36:10.080 回答
0

原因是我的应用程序有一个 Ear 范围的类加载器设置。否则,即使从部署在同一服务器上的不同耳朵,本地参考也应该起作用。

于 2013-06-07T16:11:54.030 回答
0

你的错误表明你在这条线上有问题

mockFinanceServiceLocal.createFinancialTransaction(mockFinanceTrasactionParam);

是什么mockFinanceTrasactionParam 它在哪里定义?

于 2013-05-14T04:52:09.437 回答