[
https://jira.jboss.org/jira/browse/JBSEAM-2286?page=com.atlassian.jira.pl...
]
Elias Ross commented on JBSEAM-2286:
------------------------------------
Let me expand on the last comment.
Seam gets deployed as part of a .war deployment, which occurs after your EJB deployment.
The solution is on JBoss is to add a
@Depends("com.example:type=DummyService")
to your MDB class. What the attached .zip contains is a Seam component for creating a
'dummy service' as part of the Seam initialization. It works by reading in an .xml
file, creates a virtual URL with those contents, and passes it to the JBoss MainDeployer.
On JBoss 5, I think this could be simplified a lot.
What JBoss should do is to create a trigger that will enable your EJBs to depend on .war
deployments to complete. There are MBeans registered, under
"jboss.web.deployment", but there are random IDs attached to them, e.g
"id=1174003084,war=jbossws-context.war".
MDB activated too early to use Seam components as a standard EJB
----------------------------------------------------------------
Key: JBSEAM-2286
URL:
https://jira.jboss.org/jira/browse/JBSEAM-2286
Project: Seam
Issue Type: Bug
Components: EJB3
Affects Versions: 2.0.0.GA
Reporter: Siarhei Dudzin
Fix For: The future
Attachments: deploy-hack.zip
As specified in the forum reference I have an MDB which uses a SLSB (also declared as
Seam component) with business logic. If I deploy the application and there are already
messages in the queue I get the following exception:
javax.ejb.EJBTransactionRolledbackException: java.lang.IllegalStateException: Attempted
to invoke a
Seam component outside the an initialized application
at org.jboss.ejb3.tx.Ejb3TxPolicy.handleInCallerTx(Ejb3TxPolicy.java:87)
at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:130)
at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:195)
at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at
org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at
org.jboss.ejb3.mdb.MessagingContainer.localInvoke(MessagingContainer.java:249)
at
org.jboss.ejb3.mdb.inflow.MessageInflowLocalProxy.delivery(MessageInflowLocalProxy.java:268)
at
org.jboss.ejb3.mdb.inflow.MessageInflowLocalProxy.invoke(MessageInflowLocalProxy.java:138)
at $Proxy111.onMessage(Unknown Source)
Looks like the MDB processing the message before Seam is initialized?
This forces me to undeclare the SLSB as a Seam component and (potentially) duplicate
business logic if I want to re-use the same functionality of the SLSB in Seam.
I could use the solution from
http://www.jboss.org/?module=bb&op=viewtopic&t=100946 but then it would force me
to use vendor-specific API.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira