Hi,
I've been trying to bind InitialContext to Context so that I could
bind a DataSource from jndi. For some reason guice crashes with the
following error when trying to bind InitialContext.
The application that I'm writing is a web app and the module which
loads context is added in the GuiceServletContextListener
The Error:
SEVERE: Exception sending context initialized event to listener
instance of class com.webapp.listeners.GuiceLoader
com.google.inject.internal.ComputationException:
com.google.inject.internal.cglib.core.CodeGenerationException:
java.lang.reflect.InvocationTargetException-->null
at com.google.inject.internal.MapMaker$StrategyImpl.compute
(MapMaker.java:553)
at com.google.inject.internal.MapMaker$StrategyImpl.compute
(MapMaker.java:419)
at com.google.inject.internal.CustomConcurrentHashMap
$ComputingImpl.get(CustomConcurrentHashMap.java:2041)
at com.google.inject.internal.FailableCache.get(FailableCache.java:
46)
at com.google.inject.ConstructorInjectorStore.get
(ConstructorInjectorStore.java:52)
at com.google.inject.ConstructorBindingImpl.initialize
(ConstructorBindingImpl.java:57)
at com.google.inject.InjectorImpl.initializeBinding(InjectorImpl.java:
377)
at com.google.inject.InjectorImpl.createJustInTimeBinding
(InjectorImpl.java:645)
at com.google.inject.InjectorImpl.createJustInTimeBindingRecursive
(InjectorImpl.java:581)
at com.google.inject.InjectorImpl.getJustInTimeBinding
(InjectorImpl.java:172)
at com.google.inject.InjectorImpl.getBindingOrThrow(InjectorImpl.java:
132)
at com.google.inject.InjectorImpl.getInternalFactory
(InjectorImpl.java:651)
at com.google.inject.FactoryProxy.notify(FactoryProxy.java:48)
at com.google.inject.BindingProcessor.runCreationListeners
(BindingProcessor.java:230)
at com.google.inject.InjectorBuilder.initializeStatically
(InjectorBuilder.java:131)
at com.google.inject.InjectorBuilder.build(InjectorBuilder.java:105)
at com.google.inject.Guice.createInjector(Guice.java:92)
at com.google.inject.Guice.createInjector(Guice.java:69)
at com.google.inject.Guice.createInjector(Guice.java:59)
at fi.bitec.mobilesafe.listeners.GuiceLoader.getInjector
(GuiceLoader.java:19)
at
com.google.inject.servlet.GuiceServletContextListener.contextInitialized
(GuiceServletContextListener.java:43)
at org.apache.catalina.core.StandardContext.listenerStart
(StandardContext.java:3934)
at org.apache.catalina.core.StandardContext.start
(StandardContext.java:4429)
at org.apache.catalina.core.StandardContext.reload
(StandardContext.java:3190)
at org.apache.catalina.loader.WebappLoader.backgroundProcess
(WebappLoader.java:404)
at org.apache.catalina.core.ContainerBase.backgroundProcess
(ContainerBase.java:1309)
at org.apache.catalina.core.ContainerBase
$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
at org.apache.catalina.core.ContainerBase
$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase
$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase
$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
at java.lang.Thread.run(Unknown Source)
Caused by:
com.google.inject.internal.cglib.core.CodeGenerationException:
java.lang.reflect.InvocationTargetException-->null
at com.google.inject.internal.cglib.core.AbstractClassGenerator.create
(AbstractClassGenerator.java:237)
at com.google.inject.internal.cglib.reflect.FastClass$Generator.create
(FastClass.java:64)
at com.google.inject.internal.BytecodeGen.newFastClass
(BytecodeGen.java:166)
at com.google.inject.DefaultConstructionProxyFactory$1.<init>
(DefaultConstructionProxyFactory.java:54)
at com.google.inject.DefaultConstructionProxyFactory.create
(DefaultConstructionProxyFactory.java:52)
at com.google.inject.ProxyFactory.create(ProxyFactory.java:152)
at com.google.inject.ConstructorInjectorStore.createConstructor
(ConstructorInjectorStore.java:84)
at com.google.inject.ConstructorInjectorStore.access$000
(ConstructorInjectorStore.java:31)
at com.google.inject.ConstructorInjectorStore$1.create
(ConstructorInjectorStore.java:39)
at com.google.inject.ConstructorInjectorStore$1.create
(ConstructorInjectorStore.java:35)
at com.google.inject.internal.FailableCache$1.apply
(FailableCache.java:35)
at com.google.inject.internal.MapMaker$StrategyImpl.compute
(MapMaker.java:549)
... 30 more
Caused by: java.lang.reflect.InvocationTargetException
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 com.google.inject.internal.cglib.core.ReflectUtils.defineClass
(ReflectUtils.java:384)
at com.google.inject.internal.cglib.core.AbstractClassGenerator.create
(AbstractClassGenerator.java:219)
... 41 more
Caused by: java.lang.NoClassDefFoundError: com/google/inject/internal/
cglib/reflect/FastClass
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
... 47 more
Caused by: java.lang.ClassNotFoundException:
com.google.inject.internal.cglib.reflect.FastClass
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
... 49 more
The GuiceContextListener
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.servlet.GuiceServletContextListener;
/**
* Application Lifecycle Listener implementation class GuiceLoader
*
*/
public class GuiceLoader extends GuiceServletContextListener {
@Override
public Injector getInjector() {
return Guice.createInjector(new ServletConfs(), new DatabaseModule
());
}
}
And finally the DatabaseModule
public class DatabaseModule extends AbstractModule {
@Override
protected void configure() {
bind(Context.class).to(InitialContext.class);
bind(DataSource.class).toProvider(fromJndi(DataSource.class,
"java:comp/env/jdbc/database"));
}
}
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"google-guice" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/google-guice?hl=en
-~----------~----~----~----~------~----~------~--~---