在我在JBoss 5.1.0GA部署,JavaEE的-5我有一般形式JBoss的5 - 解讀堆棧跟蹤
public interface Foo {
void baz();
}
@Stateless
public class FooBean implements Foo {
void baz() { // ...
}
}
我假定這是一樣的,如果我有明確的註解豆Foo與@Local的接口。從代碼中看到堆棧跟蹤,我認爲它實際上是使用遠程接口,而我希望所有的bean都是本地的。
我是否需要明確註釋接口爲本地或有一些默認?查找關於此的文檔是具有挑戰性的,因此任何指向相關文檔的鏈接都將不勝感激。
(編輯添加可疑的堆棧跟蹤)
堆棧跟蹤我得到這個樣子的。可疑的行是「$ Proxy638」。 FooBean註釋如上所述,Client和Manager都是POJO的(例如,完全沒有任何Java EE相關項目的註釋)。這個調用正在被消息驅動bean處理,如果這有幫助的話。我可以看到這個例外是我的一個例外(「我的錯誤消息到了這裏!」是我想要的真正堆棧跟蹤信息)。
2011-01-10 11:15:06,428 ERROR [org.jboss.resource.adapter.jms.inflow.JmsServerSession](WorkManager(2)-11) Unexpected error delivering message delegator->JBossMessage[21211678385963013]:PERSISTENT, deliveryId=5
javax.ejb.EJBTransactionRolledbackException: My error message goes here!
at org.jboss.ejb3.tx.Ejb3TxPolicy.handleInCallerTx(Ejb3TxPolicy.java:115)
at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:130)
at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:194)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.security.RunAsSecurityInterceptorv2.invoke(RunAsSecurityInterceptorv2.java:94)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.security.RoleBasedAuthorizationInterceptorv2.invoke(RoleBasedAuthorizationInterceptorv2.java:201)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:186)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer.java:182)
at org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer.java:240)
at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:188)
at $Proxy638.generateWidget(Unknown Source)
at com.foobar.managers.Client.writeBananaToStream(Client.java:456)
at com.foobar.managers.Client.write(Client.java:123)
at com.foobar.managers.Manager.persist(Manager.java:275)
at com.foobar.FooBean.doSomething(FooBean.java:1243)
請注意,我不得不匿名代碼,因此任何不匹配的東西與類名幾乎肯定是錯別字!
http://openejb.apache.org/3.0/simple-stateless-example.html似乎確認默認是本地的,但我希望獲得一個授權源(例如來自JBoss或來自EJB規範的東西) 。 – 2011-01-10 15:09:13
堆棧跟蹤的哪部分使您認爲它是遠程的? – Osw 2011-01-10 15:13:52