2013-05-13 57 views
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); 

请帮我理解错在哪里。

回答

0

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

0

你的错误提示,你在这条线

mockFinanceServiceLocal.createFinancialTransaction(mockFinanceTrasactionParam); 

什么是mockFinanceTrasactionParam有问题吗?它在哪里定义?

+0

mockFinanceTrasactionParam在MockFinanceService驻留的EJB项目的客户端jar中定义。 – Pradeepkumar 2013-05-14 09:07:19

+0

也请发布该配置文件。 – 2013-05-14 14:21:33

+0

我只注释了配置。 – Pradeepkumar 2013-05-15 08:59:19

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有关......