You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@geronimo.apache.org by Marcin Waldowski <mw...@sulechow.net> on 2007/09/11 16:05:16 UTC

Problem with @PostConstruct in MDB

Hello.

I use Geronimo 2.0.1. When I add to my mdb code following lines:

import javax.interceptor.InvocationContext;
import javax.annotation.PostConstruct;

@PostConstruct
 public void construct(InvocationContext ctx) {
     // do nothing
 }

I receive exception below during deployment. Whitout this lines 
everything works ok. My dependency for ejb module to satisfy aditional 
imports is:

<dependency>
    <groupId>org.apache.geronimo.specs</groupId>
    <artifactId>geronimo-annotation_1.0_spec</artifactId>
    <version>1.1</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.apache.geronimo.specs</groupId>
    <artifactId>geronimo-interceptor_3.0_spec</artifactId>
    <version>1.0</version>
    <scope>provided</scope>
</dependency>

Can anyone point me what I do wrong?

Regards,
Marcin

org.apache.geronimo.common.DeploymentException: Jar failed validation: pprsrv-ejb-1.2.jarERROR ... null:	Cannot validate jar: Java heap space
org.apache.geronimo.common.DeploymentException: org.apache.geronimo.common.DeploymentException: Jar failed validation: pprsrv-ejb-1.2.jarERROR ... null:	Cannot validate jar: Java heap space
	at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:385)
	at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:126)
	at org.apache.geronimo.deployment.Deployer$$FastClassByCGLIB$$734a235d.invoke(<generated>)
	at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
	at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
	at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:124)
	at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:865)
	at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:239)
	at org.apache.geronimo.deployment.plugin.local.AbstractDeployCommand.doDeploy(AbstractDeployCommand.java:116)
	at org.apache.geronimo.deployment.plugin.local.RedeployCommand.redeploySameConfiguration(RedeployCommand.java:225)
	at org.apache.geronimo.deployment.plugin.local.RedeployCommand.run(RedeployCommand.java:101)
	at java.lang.Thread.run(Thread.java:595)
Caused by: org.apache.geronimo.common.DeploymentException: Jar failed validation: pprsrv-ejb-1.2.jarERROR ... null:	Cannot validate jar: Java heap space
	at org.apache.geronimo.openejb.deployment.EjbModuleBuilder.getEjbJarInfo(EjbModuleBuilder.java:528)
	at org.apache.geronimo.openejb.deployment.EjbModuleBuilder.initContext(EjbModuleBuilder.java:437)
	at org.apache.geronimo.openejb.deployment.EjbModuleBuilder$$FastClassByCGLIB$$cd80af20.invoke(<generated>)
	at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
	at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
	at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:124)
	at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:830)
	at org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
	at org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
	at org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
	at org.apache.geronimo.j2ee.deployment.ModuleBuilder$$EnhancerByCGLIB$$b86e2c25.initContext(<generated>)
	at org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(EARConfigBuilder.java:576)
	at org.apache.geronimo.j2ee.deployment.EARConfigBuilder$$FastClassByCGLIB$$38e56ec6.invoke(<generated>)
	at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
	at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
	at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:124)
	at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:830)
	at org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
	at org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
	at org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
	at org.apache.geronimo.j2ee.deployment.CorbaGBeanNameSource$$EnhancerByCGLIB$$ef9ba63a.buildConfiguration(<generated>)
	at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:304)
	... 11 more



Re: Problem with @PostConstruct in MDB

Posted by Marcin Waldowski <mw...@sulechow.net>.
Kevan Miller wrote:
>
> On Sep 11, 2007, at 4:13 PM, David Blevins wrote:
>
>>
>> The exception you should have gotten was:
>>
>>  - - - - - - - -
>> Jar Failed validaton: pprsrv-ejb-1.2.jar
>> FAIL - YourBeanName - Invalid PostConstruct arguments: 
>> construct(InvocationContext)
>>  - - - - - - - -
>>
>> Just added this page for you:  
>> http://cwiki.apache.org/OPENEJB/callbacks.html

David, thanks. Now I see that I've mix up ejb annotation with 
interceptor annotation. Now my application deploy without errors :)

>
>>
>>> Caused by: org.apache.geronimo.common.DeploymentException: Jar 
>>> failed validation: pprsrv-ejb-1.2.jarERROR ... null:    Cannot 
>>> validate jar: Java heap space
>>>     at 
>>> org.apache.geronimo.openejb.deployment.EjbModuleBuilder.getEjbJarInfo(EjbModuleBuilder.java:528) 
>>>
>>>     at 
>>> org.apache.geronimo.openejb.deployment.EjbModuleBuilder.initContext(EjbModuleBuilder.java:437) 
>>>
>>>     at 
>>> org.apache.geronimo.openejb.deployment.EjbModuleBuilder$$FastClassByCGLIB$$cd80af20.invoke(<generated>) 
>>>
>>>     at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
>>>     at 
>>> org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38) 
>>>
>>>     at 
>>> org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:124) 
>>>
>>>     at 
>>> org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:830) 
>>>
>>
>> This should not happen.  Kevan, any suggestions on better memory 
>> settings?
>
> Strange. Marcin, how big is your app?
>
> Have you tried increasing your max heap space (e.g. -Xmx128m )?
>
> Although possible, I find it a bit hard to believe that 1) your app is 
> large enough to have you at the very limit of your heap space and 2) 
> that adding @PostConstruct is putting you over the heap space limit. I 
> wonder if there isn't a bug in the validation code...
>
> Marcin, can you share your app with us?
>
> --kevan
>

Kevan, my app is rather small (source is only 500 kB). Unfortunately I 
cannot share my app :(

I have tried to reporoduce this error on the source code for 
http://cwiki.apache.org/GMOxDOC20/jms-and-mdb-sample-application.html 
example. Patch is in attachment. I supposed to receive error, any error, 
because, as David said, @PostConstruct arguments are invalid. But 
modified jms-mdb-sample has been deployed without any errors. Strange, 
but maybe the same bad things happened, but jms-mdb-sample is not big 
enought to create "org.apache.geronimo.common.DeploymentException: Jar 
failed validation: pprsrv-ejb-1.2.jarERROR ... null:    Cannot validate 
jar: Java heap space"

HTH,
Marcin


Re: Problem with @PostConstruct in MDB

Posted by Kevan Miller <ke...@gmail.com>.
On Sep 11, 2007, at 4:13 PM, David Blevins wrote:

>
> On Sep 11, 2007, at 7:05 AM, Marcin Waldowski wrote:
>
>> Hello.
>>
>> I use Geronimo 2.0.1. When I add to my mdb code following lines:
>>
>> import javax.interceptor.InvocationContext;
>> import javax.annotation.PostConstruct;
>>
>> @PostConstruct
>> public void construct(InvocationContext ctx) {
>>     // do nothing
>> }
>>
>> I receive exception below during deployment. Whitout this lines  
>> everything works ok.
>
> The exception you should have gotten was:
>
>  - - - - - - - -
> Jar Failed validaton: pprsrv-ejb-1.2.jar
> FAIL - YourBeanName - Invalid PostConstruct arguments: construct 
> (InvocationContext)
>  - - - - - - - -
>
> Just added this page for you:  http://cwiki.apache.org/OPENEJB/ 
> callbacks.html

Very nice. Thanks for the doc David!

>
>> Caused by: org.apache.geronimo.common.DeploymentException: Jar  
>> failed validation: pprsrv-ejb-1.2.jarERROR ... null:	Cannot  
>> validate jar: Java heap space
>> 	at  
>> org.apache.geronimo.openejb.deployment.EjbModuleBuilder.getEjbJarInfo 
>> (EjbModuleBuilder.java:528)
>> 	at  
>> org.apache.geronimo.openejb.deployment.EjbModuleBuilder.initContext 
>> (EjbModuleBuilder.java:437)
>> 	at org.apache.geronimo.openejb.deployment.EjbModuleBuilder$ 
>> $FastClassByCGLIB$$cd80af20.invoke(<generated>)
>> 	at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
>> 	at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke 
>> (FastMethodInvoker.java:38)
>> 	at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke 
>> (GBeanOperation.java:124)
>> 	at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke 
>> (GBeanInstance.java:830)
>
> This should not happen.  Kevan, any suggestions on better memory  
> settings?

Strange. Marcin, how big is your app?

Have you tried increasing your max heap space (e.g. -Xmx128m )?

Although possible, I find it a bit hard to believe that 1) your app  
is large enough to have you at the very limit of your heap space and  
2) that adding @PostConstruct is putting you over the heap space  
limit. I wonder if there isn't a bug in the validation code...

Marcin, can you share your app with us?

--kevan 

Re: Problem with @PostConstruct in MDB

Posted by David Blevins <da...@visi.com>.
On Sep 11, 2007, at 7:05 AM, Marcin Waldowski wrote:

> Hello.
>
> I use Geronimo 2.0.1. When I add to my mdb code following lines:
>
> import javax.interceptor.InvocationContext;
> import javax.annotation.PostConstruct;
>
> @PostConstruct
> public void construct(InvocationContext ctx) {
>     // do nothing
> }
>
> I receive exception below during deployment. Whitout this lines  
> everything works ok.

The exception you should have gotten was:

  - - - - - - - -
Jar Failed validaton: pprsrv-ejb-1.2.jar
FAIL - YourBeanName - Invalid PostConstruct arguments: construct 
(InvocationContext)
  - - - - - - - -

Just added this page for you:  http://cwiki.apache.org/OPENEJB/ 
callbacks.html

> Caused by: org.apache.geronimo.common.DeploymentException: Jar  
> failed validation: pprsrv-ejb-1.2.jarERROR ... null:	Cannot  
> validate jar: Java heap space
> 	at  
> org.apache.geronimo.openejb.deployment.EjbModuleBuilder.getEjbJarInfo( 
> EjbModuleBuilder.java:528)
> 	at  
> org.apache.geronimo.openejb.deployment.EjbModuleBuilder.initContext 
> (EjbModuleBuilder.java:437)
> 	at org.apache.geronimo.openejb.deployment.EjbModuleBuilder$ 
> $FastClassByCGLIB$$cd80af20.invoke(<generated>)
> 	at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
> 	at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke 
> (FastMethodInvoker.java:38)
> 	at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke 
> (GBeanOperation.java:124)
> 	at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke 
> (GBeanInstance.java:830)

This should not happen.  Kevan, any suggestions on better memory  
settings?

-David