|
From: Colin S. <col...@ex...> - 2003-11-14 19:08:44
|
It may work in some versions of JBoss. JBoss 3.2.2 doesn't deploy the
bean at all though:
----
12:22:35,853 ERROR [MainDeployer] could not create deployment:
file:/C:/dev/jbos
s-3.2.2/server/default/deploy/core-app.ear
org.jboss.deployment.DeploymentException: Verification of Enterprise
Beans faile
d, see above for error messages.
at org.jboss.ejb.EJBDeployer.create(EJBDeployer.java:491)
at org.jboss.deployment.MainDeployer.create(MainDeployer.java:786)
at org.jboss.deployment.MainDeployer.create(MainDeployer.java:778)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:641)
...
12:22:36,118 ERROR [URLDeploymentScanner] MBeanException: Exception in
MBean ope
ration 'checkIncompleteDeployments()'
Cause: Incomplete Deployment listing:
Packages waiting for a deployer:
<none>
Incompletely deployed packages:
[org.jboss.deployment.DeploymentInfo@47111691 {
url=file:/C:/dev/jboss-3.2.2/ser
ver/default/deploy/core-app.ear }
deployer: org.jboss.deployment.EARDeployer@4977e2
status: Deployment FAILED reason: Verification of Enterprise Beans
failed, see
above for error messages.
state: FAILED
watch: file:/C:/dev/jboss-3.2.2/server/default/deploy/core-app.ear
lastDeployed: 1068830549227
----
So I don't see much choice but to change it. That is, I think it makes
more sense that it's compliant and works in JBoss, and works with
compliant code in other app servers, and breaks some non-compliant code
in other app servers, than the current situation where we force
non-compliant code, which can't run on JBoss at all.
Regardless of Spring, the real question is if there is an app-server out
there that breaks without the CreateException. If that's the case, it
would kill cross-server compatibility...
Rod Johnson wrote:
>Yes, as the bug entries say I took the decision that it is incorrect
>according to the spec, but the WebLogic examples do throw CreateException.
>And the user reported that it _did_ still work in JBoss, so I figured that I
>didn't want to have to go test it in all EJB containers. (Ie I didn't have
>time to retest it in WLS.)
>
>However, you probably should change it.
>
>Regards,
>Rod
>
>----- Original Message -----
>From: "jürgen höller [werk3AT]" <jue...@we...>
>To: <spr...@li...>
>Sent: Friday, November 14, 2003 5:40 PM
>Subject: Re: [Springframework-developer] AbstractMessageDrivenBean's
>ejbCreate method is not spec compliant, I am going to change it
>
>
>There's a bug entry on SourceForge for this:
>http://sourceforge.net/tracker/index.php?func=detail&aid=823990&group_id=73357&atid=537539
>
>Juergen
>
>________________________________
>
>Von: spr...@li... im Auftrag von
>Colin Sampaleanu
>Gesendet: Fr 14.11.2003 18:41
>An: spr...@li...
>Betreff: [Springframework-developer] AbstractMessageDrivenBean's ejbCreate
>method is not spec compliant, I am going to change it
>
>
>
>AbstractMessageDrivenBean currently has the following ejbCreate method:
>
> /**
> * Lifecycle method required by the EJB specification but not
> * the MessageDrivenBean interface.
> * <p>This implementation loads the BeanFactory. Don't override it
> * (although it can't be made final): code your initialization in
> * onEjbCreate(), which is called when the BeanFactory is available.
> * <p>Unfortunately we can't load the BeanFactory in
>setSessionContext(),
> * as ResourceManager access isn't permitted and the BeanFactory may
>require it.
> */
> public void ejbCreate() throws CreateException {
> loadBeanFactory();
> onEjbCreate();
> }
>
>This is actually not spec compliant. If you look at the spec, section
>15.7.3, it states that MessageDrivenBeans must not throw application
>exceptions. CreateException is an application exception, and in fact
>JBoss, for example, will not allow an MDB with this create method to load.
>
>So I am going to change this to remove the exception, after I get back
>from lunch. If anybody disagrees with me, before or after that, please
>let me know.
>
>(lucky me, still putzin' around with legacy EJB code...)
>
>Regards,
>Colin
>
>
>
|