geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Aaron Mulder <ammul...@alumni.princeton.edu>
Subject Re: geronimo + spring
Date Thu, 22 Sep 2005 21:58:32 GMT
So it looks like the problem is that someting is unable to access the
class org.springframework.jndi.JndiCallback.  It looks like that's one
of the core Spring classes, in spring-x.y.z.jar.  It looks like the
specific problem is that SpringGBean.getProxyClass is not passing a
ClassLoader with access to the Spring library to the Proxy factory. 
I'm not totally sure what's happening in the SpringGBean code and
whether there's something you can configure to work around this.  I
guess we need to look at that class in more detail.  Does anyone know
more about it?

Aaron

On 9/22/05, Michele La Porta <michele.laporta@gmail.com> wrote:
> I'm working around to find out how to deploy a simple spring
> application on geronimo. I take a look on geronimo modules
> spring-geronimo and geronimo-spring-builder, read something on forum
> and I try start to create a simple springappl.spr( a jar + manifest
> with classpath + spring.xml) running on Geronimo-1.0-M4 from Eclipse
> start a minimal geronimo configuration and start the module
> SpringDeployer..seeems to work if I use class from archive but when I
> build archive springjms-0.1.spr in which i put :
>
>  META-INF/
>
>  META-INF/MANIFEST.MF
>
>           Code:
>
>  (
>  Class-Path:  geronimo-spec-jms-1.1-rc4.jar geronimo-kernel-1.0-M4.jar
>   geronimo-transaction-1.0-M4.jar commons-logging-1.0.4.jar concurrent-
>   1.3.4.jar mx4j-3.0.1.jar cglib-nodep-2.1.jar spring-1.1.3.jar activem
>   q-core-3.1-M5.jar
>  )
>
>  META-INF/bootstrap.properties
>
>           Code:
>
>  (
>  jms.connectionFactoryName=ConnectionFactory
>  jms.jndiProviderUrl=tcp://localhost:61616
>  jms.jndiContextFactory=org.activemq.jndi.ActiveMQInitialContextFactory
>  jms.weatherTopic=weatherTopic
>  jms.weatherRequestsTopic=weatherRequestsTopic
>  )
>
>  META-INF/spring.xml
>
>           Code:
>
>  (
>  <?xml version="1.0" encoding="UTF-8"?>
>  <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
> "http://www.springframework.org/dtd/spring-beans.dtd">
>
>  <beans>
>
>          <bean id="placeholderConfig"
>
> class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
>                  <property name="location">
>                          <value>classpath:/bootstrap.properties</value>
>                  </property>
>          </bean>
>
>          <bean id="jndiTemplate"
>                  class="org.springframework.jndi.JndiTemplate">
>                  <property name="environment">
>                          <props>
>                                  <prop key="java.naming.factory.initial">
>                                          ${jms.jndiContextFactory}
>                                  </prop>
>
>                                  <!-- Specific to ActiveMQ -->
>
>                                  <!-- the address of the ActiveMQ broker -->
>                                  <prop
> key="brokerURL">${jms.jndiProviderUrl}</prop>
>                                  <!-- Some Topics Registration, since
> we are using a fake JNDI implementation
>                                  <prop key="topic.${jms.weatherTopic}">
>                                          ${jms.weatherTopic}
>                                  </prop>
>                                  <prop key="topic.${jms.weatherRequestsTopic}">
>                                          ${jms.weatherRequestsTopic}
>                                  </prop>-->
>                          </props>
>                  </property>
>          </bean>
>  </beans>
>  )
>
>  SpringJmsTemplate.class
>
>           Code:
>
>  import org.apache.geronimo.gbean.GBeanInfo;
>  import org.apache.geronimo.gbean.GBeanInfoBuilder;
>  import org.springframework.jms.core.JmsTemplate;
>
>  public class SpringJmsTemplate implements Runnable{
>
>     private JmsTemplate jmsTemplate;
>
>      public SpringJmsTemplate() {
>      }
>
>      public void run() {
>         boolean loop=true;
>         while(loop){
>            try {
>                jmsTemplate.receive();
>           } catch (Exception e) {
>              e.printStackTrace();
>              loop = false;
>           }
>         }
>
>      }
>      public static final GBeanInfo GBEAN_INFO;
>
>      static {
>          GBeanInfoBuilder infoFactory = new
> GBeanInfoBuilder(SpringJmsTemplate.class, "SpringJmsTemplate");
>
>          //        infoFactory.addAttribute("kernel", Kernel.class, false);
>          //        infoFactory.addAttribute("objectName", String.class, false);
>
>          infoFactory.setConstructor(new String[]{});
>
>          GBEAN_INFO = infoFactory.getBeanInfo();
>      }
>
>      public static GBeanInfo getGBeanInfo() {
>          return GBEAN_INFO;
>      }
>
>     public JmsTemplate getJmsTemplate() {
>        return jmsTemplate;
>     }
>
>     public void setJmsTemplate(JmsTemplate jmsTemplate) {
>        this.jmsTemplate = jmsTemplate;
>     }
>  }
>
>  spring-jms-plan.xml
>
>           Code:
>
>  <?xml version="1.0" encoding="UTF-8"?>
>
>  <configuration
>      xmlns="http://geronimo.apache.org/xml/ns/deployment"
>      configId="deployment/SpringJmsTemplate"
>      >
>
>          <dependency>
>          <!--
>              <groupId>geronimo-spec</groupId>
>              <artifactId>geronimo-spec-jms</artifactId>
>              <version>1.1-rc4</version>
>                  -->
>              <uri>geronimo-spec/jars/geronimo-spec-jms-1.1-rc4.jar</uri>
>          </dependency>
>
>          <dependency>
>          <!--
>              <groupId>geronimo</groupId>
>              <artifactId>geronimo-kernel</artifactId>
>              <version>1.0-M4</version>
>               -->
>              <uri>geronimo/jars/geronimo-kernel-1.0-M4.jar</uri>
>          </dependency>
>
>          <dependency>
>  <!--
>              <groupId>geronimo</groupId>
>              <artifactId>geronimo-transaction</artifactId>
>              <version>1.0-M4</version>
>  -->
>              <uri>geronimo/jars/geronimo-transaction-1.0-M4.jar</uri>
>          </dependency>
>
>          <!-- Thirdparty Dependencies -->
>          <dependency>
>  <!--
>              <groupId>commons-logging</groupId>
>              <artifactId>commons-logging</artifactId>
>              <version>1.0.3</version>
>  -->
>              <uri>commons-logging/jars/commons-logging-1.0.3.jar</uri>
>          </dependency>
>
>          <dependency>
>  <!--
>              <groupId>concurrent</groupId>
>              <artifactId>concurrent</artifactId>
>              <version>1.3.4</version>
>   -->
>              <uri>concurrent/jars/concurrent-1.3.4.jar</uri>
>          </dependency>
>
>          <dependency>
>  <!--
>              <groupId>mx4j</groupId>
>              <artifactId>mx4j</artifactId>
>              <version>3.0.1</version>
>  -->
>              <uri>mx4j/jars/mx4j-3.0.1.jar</uri>
>          </dependency>
>
>          <dependency>
>  <!--
>              <groupId>cglib</groupId>
>              <artifactId>cglib-nodep</artifactId>
>              <version>2.1</version>
>  -->
>              <uri>cglib/jars/cglib-nodep-2.1.jar</uri>
>          </dependency>
>
>        <dependency>
>  <!--
>          <id>springframework</id>
>          <artifactId>spring</artifactId>
>          <version>1.1.3</version>
>  -->
>              <uri>springframework/jars/spring-1.1.3.jar</uri>
>        </dependency>
>  <!--
>        <dependency>
>          <id>activemq</id>
>          <artifactId>activemq-gbean</artifactId>
>          <version>3.1-M5</version>
>        </dependency>
>   -->
>        <dependency>
>  <!--
>          <id>activemq</id>
>          <artifactId>activemq-core</artifactId>
>          <version>3.1-M5</version>
>  -->
>           <uri>activemq/jars/activemq-core-3.1-M5.jar</uri>
>        </dependency>
>
>      <gbean name="SpringJmsTemplate"
>             class="SpringJmsTemplate" >
>         </gbean>
>  </configuration>
>
>
>  error from console
>
>  11:09:29,701 INFO  [SPRConfigBuilder] Planning:
> c:\temp\deployer6526.tmpdir\springjms-0.1.spr
>  11:09:29,701 INFO  [SPRConfigBuilder] getDeploymentPlan : planFile ->
> C:\geronimo-1.0-M4\modules\assembly\target\geronimo-1.0-M4\spring-jms-plan.xml
> sprFilec:\temp\deployer6526.tmpdir\springjms-0.1.spr
>  11:09:29,701 INFO  [SPRConfigBuilder] Building:
> c:\temp\deployer6526.tmpdir\springjms-0.1.spr
> 11:09:29,826 INFO [LocalConfigStore:config-store] Installed
> configuration file:c:%5Ctemp%5Cdeployer6526.tmpdir%5Cspringjms-0.1.spr
> in location 20
>  11:09:29,873 INFO  [LocalConfigStore:config-store] Loaded
> Configuration geronimo.config:name="file:c:%5Ctemp%5Cdeployer6526.tmpdir%5Cspringjms-0.1.spr"
>  11:09:29,888 DEBUG [GBeanInstanceState] GBeanInstanceState for:
> geronimo.config:name="file:c:%5Ctemp%5Cdeployer6526.tmpdir%5Cspringjms-0.1.spr"
> State changed from stopped to starting
>  11:09:29,888 DEBUG [Configuration] ClassPath for
> file:c:%5Ctemp%5Cdeployer6526.tmpdir%5Cspringjms-0.1.spr resolved to
> []
>  11:09:29,888 INFO  [Configuration] Started configuration
> file:c:%5Ctemp%5Cdeployer6526.tmpdir%5Cspringjms-0.1.spr
>  11:09:29,888 DEBUG [GBeanInstanceState] GBeanInstanceState for:
> geronimo.config:name="file:c:%5Ctemp%5Cdeployer6526.tmpdir%5Cspringjms-0.1.spr"
> State changed from starting to running
>  11:09:29,951 INFO  [PersistentConfigurationList] Saved running
> configuration list
>  11:09:29,951 DEBUG [GBeanInstanceState] GBeanInstanceState for:
> geronimo.config:name=spring-jms-plan.xml State changed from stopped to
> starting
>  11:09:29,951 DEBUG [GBeanInstanceState] GBeanInstanceState for:
> geronimo.config:name=spring-jms-plan.xml State changed from starting
> to running
>  11:09:30,013 INFO  [PersistentConfigurationList] Saved running
> configuration list
>  11:09:30,013 DEBUG [GBeanInstanceState] GBeanInstanceState for:
> geronimo.server:name=spring-jms-plan.xml,J2EEServer=geronimo,J2EEApplication=null,j2eeType=SpringModule
> State changed from stopped to starting
>  11:09:30,013 INFO  [SpringGBean] _classPath[0]:
> file:/C:/geronimo-1.0-M4/modules/assembly/target/geronimo-1.0-M4/config-store/20/
>  11:09:30,076 INFO  [XmlBeanDefinitionReader] Loading XML bean
> definitions from class path resource [META-INF/spring.xml]
> 11:09:30,076 DEBUG [XmlBeanDefinitionReader] Using JAXP implementation
> [org.apache.xerces.jaxp.DocumentBuilderFactoryImpl@15bd8f]
> 11:09:30,732 DEBUG [BeansDtdResolver] Trying to resolve XML entity
> with public ID [-//SPRING//DTD BEAN//EN] and system ID
> [http://www.springframework.org/dtd/spring-beans.dtd]
>  11:09:30,732 DEBUG [BeansDtdResolver] Trying to locate
> [spring-beans.dtd] under [/org/springframework/beans/factory/xml/]
>  11:09:30,732 DEBUG [BeansDtdResolver] Found beans DTD
> [http://www.springframework.org/dtd/spring-beans.dtd] in classpath
>  11:09:30,795 DEBUG [DefaultXmlBeanDefinitionParser] Loading bean definitions
>  11:09:30,810 DEBUG [DefaultXmlBeanDefinitionParser] Default lazy init 'false'
>  11:09:30,810 DEBUG [DefaultXmlBeanDefinitionParser] Default
> dependency check 'none'
>  11:09:30,810 DEBUG [DefaultXmlBeanDefinitionParser] Default autowire 'no'
>  11:09:30,857 DEBUG [DefaultXmlBeanDefinitionParser] Found 2 <bean>
> elements defining beans
>  11:09:30,857 INFO  [SpringGBean$GeronimoBeanFactory] Creating shared
> instance of singleton bean 'jndiTemplate'
> 11:09:30,857 DEBUG [SpringGBean$GeronimoBeanFactory] Creating instance
> of bean 'jndiTemplate' with merged definition [Root bean with class
> [org.springframework.jndi.JndiTemplate] defined in class path resource
> [META-INF/spring.xml]]
>  11:09:30,920 DEBUG [CachedIntrospectionResults] Getting BeanInfo for
> class [org.springframework.jndi.JndiTemplate]
>  11:09:30,920 DEBUG [CachedIntrospectionResults] Caching
> PropertyDescriptors for class [org.springframework.jndi.JndiTemplate]
>  11:09:30,920 DEBUG [CachedIntrospectionResults] Found property
> 'class' of type [java.lang.Class]
>  11:09:30,920 DEBUG [CachedIntrospectionResults] Found property
> 'environment' of type [java.util.Properties]
>  11:09:30,920 DEBUG [CachedIntrospectionResults] Class
> [org.springframework.jndi.JndiTemplate] is cache-safe
> 11:09:30,920 DEBUG [BeanWrapperImpl] About to invoke write method
> [public void org.springframework.jndi.JndiTemplate.setEnvironment(java.util.Properties)]
> on object of class [org.springframework.jndi.JndiTemplate]
> 11:09:30,920 DEBUG [BeanWrapperImpl] Invoked write method [public void
> org.springframework.jndi.JndiTemplate.setEnvironment(java.util.Properties)]
> with value of type [java.util.Properties]
>  11:09:30,920 DEBUG [SpringGBean$GeronimoBeanFactory] Invoking
> BeanPostProcessors before initialization of bean 'jndiTemplate'
>  11:09:30,920 DEBUG [SpringGBean$GeronimoBeanFactory] Invoking
> BeanPostProcessors after initialization of bean 'jndiTemplate'
>  11:09:30,951 INFO  [SpringGBean$GeronimoBeanFactory] Destroying
> singletons in factory
> {org.apache.geronimo.spring.SpringGBean$GeronimoBeanFactory defining
> beans [placeholderConfig,jndiTemplate]; root of BeanFactory hierarchy}
>  11:09:30,951 INFO  [SpringGBean$GeronimoBeanFactory] Destroying inner
> beans in factory
> {org.apache.geronimo.spring.SpringGBean$GeronimoBeanFactory defining
> beans [placeholderConfig,jndiTemplate]; root of BeanFactory hierarchy}
>  11:09:30,951 ERROR [GBeanInstanceState] Error while starting; GBean
> is now in the FAILED state:
> objectName="geronimo.server:name=spring-jms-plan.xml,J2EEServer=geronimo,J2EEApplication=null,j2eeType=SpringModule"
> org.springframework.beans.factory.BeanCreationException: Error
> creating bean with name 'jndiTemplate' defined in class path resource
> [META-INF/spring.xml]: Initialization of bean failed; nested exception
> is java.lang.NoClassDefFoundError:
> org/springframework/jndi/JndiCallback
>  java.lang.NoClassDefFoundError: org/springframework/jndi/JndiCallback
>          at java.lang.Class.getDeclaredMethods0(Native Method)
>          at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
>          at java.lang.Class.privateGetPublicMethods(Unknown Source)
>          at java.lang.Class.getMethods(Unknown Source)
>          at sun.misc.ProxyGenerator.generateClassFile(Unknown Source)
>          at sun.misc.ProxyGenerator.generateProxyClass(Unknown Source)
>          at java.lang.reflect.Proxy.getProxyClass(Unknown Source)
>          at org.apache.geronimo.spring.SpringGBean.createProxyClass(SpringGBean.java:373)
>          at org.apache.geronimo.spring.SpringGBean.createPOJOGBeanData(SpringGBean.java:322)
>          at org.apache.geronimo.spring.SpringGBean.afterInitialization(SpringGBean.java:258)
>          at org.apache.geronimo.spring.SpringGBean$1.postProcessAfterInitialization(SpringGBean.java:160)
>  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:202)
>  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:306)
>  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:223)
>          at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:236)
>          at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:159)
>          at org.apache.geronimo.spring.SpringGBean.doStart(SpringGBean.java:168)
>          at org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:850)
>          at org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:328)
>          at org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:111)
>          at org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:133)
>          at org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:503)
>          at org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:205)
>          at org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:141)
>          at org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:503)
>          at org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:205)
>          at org.apache.geronimo.kernel.KernelGBean.startRecursiveGBean(KernelGBean.java:72)
>          at org.apache.geronimo.kernel.KernelGBean$$FastClassByCGLIB$$1cccefc9.invoke(<generated>)
>          at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
>          at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:3
>          at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:118)
>          at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:754)
>          at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:175)
>          at org.apache.geronimo.kernel.jmx.MBeanServerDelegate.invoke(MBeanServerDelegate.java:117)
>          at javax.management.remote.rmi.RMIConnectionImpl.doOperation(Unknown
> Source)
>          at javax.management.remote.rmi.RMIConnectionImpl.access$100(Unknown
> Source)
>          at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(Unknown
> Source)
>          at java.security.AccessController.doPrivileged(Native Method)
>          at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(Unknown
> Source)
>          at javax.management.remote.rmi.RMIConnectionImpl.invoke(Unknown
> Source)
>          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>          at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>          at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>          at java.lang.reflect.Method.invoke(Unknown Source)
>          at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
>          at sun.rmi.transport.Transport$1.run(Unknown Source)
>          at java.security.AccessController.doPrivileged(Native Method)
>          at sun.rmi.transport.Transport.serviceCall(Unknown Source)
>          at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
>          at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown
> Source)
>          at java.lang.Thread.run(Unknown Source)
>  11:09:30,951 DEBUG [GBeanInstanceState] GBeanInstanceState for:
> geronimo.server:name=spring-jms-plan.xml,J2EEServer=geronimo,J2EEApplication=null,j2eeType=SpringModule
> State changed from starting to failed
>  11:12:57,680 DEBUG [JDBCPersistenceAdapter] Cleaning up old messages.
>  11:12:57,680 DEBUG [JDBCPersistenceAdapter] Cleanup done.
>  11:12:58,242 DEBUG [JournalPersistenceAdapter] Checkpoint started.
>  11:12:58,242 DEBUG [JournalPersistenceAdapter] Checkpoint done.
>
> Any idea?
>

Mime
View raw message