drdozer
Jan 6th, 2011, 04:02 PM
Hi,
I'm trying to deploy my application in glassfish. It's using spring to configure JPA. When the war is sent to the glassfish instance, I get a NPE and glassfish shuts down. My spring config is:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<tx:annotation-driven/>
<context:annotation-config/>
<aop:aspectj-autoproxy/>
<!--<context:load-time-weaver aspectj-weaving="on"/>-->
<context:load-time-weaver/>
<aop:config proxy-target-class="true"/>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="dataSource" ref="dataSource"/>
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerD ataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/twentyeight"/>
<property name="username" value="fred"/>
<property name="password" value="fredspwd"/>
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityMa nagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="persistenceUnitName" value="fredscoolapp"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVen dorAdapter">
<property name="generateDdl" value="true"/>
<property name="showSql" value="true"/>
</bean>
</property>
</bean>
<bean id="fredDao" class="foo.fredDao"/>
</beans>
The persistence.xml is:
persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="fredscoolapp" transaction-type="RESOURCE_LOCAL"> <!-- fixme: this may need changing -->
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
</properties>
</persistence-unit>
</persistence>
I'm using spring 3.0.1-RELEASE with hibernate 3.5.0-Beta-2, aspectj 1.5.4, glassfish 3.0.1.
The output in the glassfish logs is very verbose. However, the final exception seems to be the underlying cause. It's raising a NPE when attempting to load-time weave when initialising the EntityManagerFactory.
Have I made a noob mistake here? A nearly-identical persistence.xml and springconfig.xml work just fine when using JPA from the command-line, so it's something to do with how classes get weaved within glassfish.
Thanks,
Matthew
[#|2011-01-06T21:52:38.833+0000|SEVERE|glassfish3.0.1|org.asp ectj.weaver.loadtime.Aj|_ThreadID=24;_ThreadName=T hread-1;|org/objectweb/asm/AnnotationWriter
java.lang.NullPointerException
at org.aspectj.weaver.tools.WeavingAdaptor.weaveClass (WeavingAdaptor.java:244)
at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java: 78)
at org.aspectj.weaver.loadtime.ClassPreProcessorAgent Adapter.transform(ClassPreProcessorAgentAdapter.ja va:52)
at org.springframework.context.weaving.AspectJWeaving Enabler$AspectJClassBypassingClassFileTransformer. transform(AspectJWeavingEnabler.java:97)
at org.glassfish.web.loader.WebappClassLoader$3.prepr ocess(WebappClassLoader.java:2685)
at org.glassfish.web.loader.WebappClassLoader.findCla ss(WebappClassLoader.java:916)
at org.glassfish.web.loader.WebappClassLoader.loadCla ss(WebappClassLoader.java:1430)
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.jav a:2291)
at java.lang.Class.getDeclaredFields(Class.java:1743)
at org.glassfish.web.loader.WebappClassLoader.clearRe ferences(WebappClassLoader.java:1837)
at org.glassfish.web.loader.WebappClassLoader.stop(We bappClassLoader.java:1680)
at org.glassfish.web.loader.WebappClassLoader.preDest roy(WebappClassLoader.java:1649)
at org.glassfish.deployment.common.DeploymentContextI mpl.preDestroy(DeploymentContextImpl.java:129)
at com.sun.enterprise.v3.server.ApplicationLifecycle$ 1.actOn(ApplicationLifecycle.java:216)
at com.sun.enterprise.v3.server.ApplicationLifecycle. deploy(ApplicationLifecycle.java:342)
at com.sun.enterprise.v3.server.ApplicationLifecycle. deploy(ApplicationLifecycle.java:183)
at org.glassfish.deployment.admin.DeployCommand.execu te(DeployCommand.java:272)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.ex ecute(CommandRunnerImpl.java:305)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCo mmand(CommandRunnerImpl.java:320)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCo mmand(CommandRunnerImpl.java:1176)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.acce ss$900(CommandRunnerImpl.java:83)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$Exec utionContext.execute(CommandRunnerImpl.java:1235)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$Exec utionContext.execute(CommandRunnerImpl.java:1224)
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand (AdminAdapter.java:365)
at com.sun.enterprise.v3.admin.AdminAdapter.service(A dminAdapter.java:204)
at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service( GrizzlyAdapter.java:166)
at com.sun.enterprise.v3.server.HK2Dispatcher.dispath (HK2Dispatcher.java:100)
at com.sun.enterprise.v3.services.impl.ContainerMappe r.service(ContainerMapper.java:245)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(P rocessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(Proce ssorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(Process orTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute (DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtoc olFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(Defau ltProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(Defau ltProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(Htt pProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(Pr otocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(Selec tionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:6 9)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doW ork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run (AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:662)
I'm trying to deploy my application in glassfish. It's using spring to configure JPA. When the war is sent to the glassfish instance, I get a NPE and glassfish shuts down. My spring config is:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<tx:annotation-driven/>
<context:annotation-config/>
<aop:aspectj-autoproxy/>
<!--<context:load-time-weaver aspectj-weaving="on"/>-->
<context:load-time-weaver/>
<aop:config proxy-target-class="true"/>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="dataSource" ref="dataSource"/>
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerD ataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/twentyeight"/>
<property name="username" value="fred"/>
<property name="password" value="fredspwd"/>
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityMa nagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="persistenceUnitName" value="fredscoolapp"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVen dorAdapter">
<property name="generateDdl" value="true"/>
<property name="showSql" value="true"/>
</bean>
</property>
</bean>
<bean id="fredDao" class="foo.fredDao"/>
</beans>
The persistence.xml is:
persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="fredscoolapp" transaction-type="RESOURCE_LOCAL"> <!-- fixme: this may need changing -->
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
</properties>
</persistence-unit>
</persistence>
I'm using spring 3.0.1-RELEASE with hibernate 3.5.0-Beta-2, aspectj 1.5.4, glassfish 3.0.1.
The output in the glassfish logs is very verbose. However, the final exception seems to be the underlying cause. It's raising a NPE when attempting to load-time weave when initialising the EntityManagerFactory.
Have I made a noob mistake here? A nearly-identical persistence.xml and springconfig.xml work just fine when using JPA from the command-line, so it's something to do with how classes get weaved within glassfish.
Thanks,
Matthew
[#|2011-01-06T21:52:38.833+0000|SEVERE|glassfish3.0.1|org.asp ectj.weaver.loadtime.Aj|_ThreadID=24;_ThreadName=T hread-1;|org/objectweb/asm/AnnotationWriter
java.lang.NullPointerException
at org.aspectj.weaver.tools.WeavingAdaptor.weaveClass (WeavingAdaptor.java:244)
at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java: 78)
at org.aspectj.weaver.loadtime.ClassPreProcessorAgent Adapter.transform(ClassPreProcessorAgentAdapter.ja va:52)
at org.springframework.context.weaving.AspectJWeaving Enabler$AspectJClassBypassingClassFileTransformer. transform(AspectJWeavingEnabler.java:97)
at org.glassfish.web.loader.WebappClassLoader$3.prepr ocess(WebappClassLoader.java:2685)
at org.glassfish.web.loader.WebappClassLoader.findCla ss(WebappClassLoader.java:916)
at org.glassfish.web.loader.WebappClassLoader.loadCla ss(WebappClassLoader.java:1430)
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.jav a:2291)
at java.lang.Class.getDeclaredFields(Class.java:1743)
at org.glassfish.web.loader.WebappClassLoader.clearRe ferences(WebappClassLoader.java:1837)
at org.glassfish.web.loader.WebappClassLoader.stop(We bappClassLoader.java:1680)
at org.glassfish.web.loader.WebappClassLoader.preDest roy(WebappClassLoader.java:1649)
at org.glassfish.deployment.common.DeploymentContextI mpl.preDestroy(DeploymentContextImpl.java:129)
at com.sun.enterprise.v3.server.ApplicationLifecycle$ 1.actOn(ApplicationLifecycle.java:216)
at com.sun.enterprise.v3.server.ApplicationLifecycle. deploy(ApplicationLifecycle.java:342)
at com.sun.enterprise.v3.server.ApplicationLifecycle. deploy(ApplicationLifecycle.java:183)
at org.glassfish.deployment.admin.DeployCommand.execu te(DeployCommand.java:272)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.ex ecute(CommandRunnerImpl.java:305)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCo mmand(CommandRunnerImpl.java:320)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCo mmand(CommandRunnerImpl.java:1176)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.acce ss$900(CommandRunnerImpl.java:83)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$Exec utionContext.execute(CommandRunnerImpl.java:1235)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$Exec utionContext.execute(CommandRunnerImpl.java:1224)
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand (AdminAdapter.java:365)
at com.sun.enterprise.v3.admin.AdminAdapter.service(A dminAdapter.java:204)
at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service( GrizzlyAdapter.java:166)
at com.sun.enterprise.v3.server.HK2Dispatcher.dispath (HK2Dispatcher.java:100)
at com.sun.enterprise.v3.services.impl.ContainerMappe r.service(ContainerMapper.java:245)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(P rocessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(Proce ssorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(Process orTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute (DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtoc olFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(Defau ltProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(Defau ltProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(Htt pProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(Pr otocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(Selec tionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:6 9)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doW ork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run (AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:662)