I am still struggling with $SUBJ.

The problem narrowed down to not being able to bind JNDI to a
servlet.Context with context path "/".
All examples show how to work with WebAppContext.
I don't want to use WebAppContext because I don't have a WAR with files,
only a servlet class, and Jetty bootstrapped manually.

Inside it works so that the JNDI prefix is context.toString(), thus the
whole name is
"org.mortbay.jetty.servlet.Context@1a8dfb3{_,null}/__/BeanManager"
which is obviously wrong.

I've tried to put the object to JNDI every way I could think up, even
"manually" (see below), but nothing worked. Weld still says,

SEVERE: unavailable
org.jboss.seam.solder.beanManager.BeanManagerUnavailableException:
Failed to locate BeanManager using any of these providers:
org.jboss.seam.solder.beanManager.DefaultJndiBeanManagerProvider(11),
org.jboss.seam.solder.beanManager.ServletContainerJndiBeanManagerProvider(10)
at
org.jboss.seam.solder.beanManager.BeanManagerLocator.getBeanManager(BeanManagerLocator.java:91)
at
org.jboss.seam.wicket.SeamApplication.internalInit(SeamApplication.java:54)
at
org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:723)
...

Whole app, as it is now, is here:
https://ondrazizka.googlecode.com/svn/trunk/bots/JawaBot/branches/2.0/

Any ideas?
Any examples on how to bind object to Context's JNDI?


Thanks,
Ondra

---------


      Server server = new Server( 8080 );
      Context ctx = new Context( server, "/", Context.NO_SECURITY |
Context.SESSIONS );

      // Wicket.
      final ServletHolder wicketSH = new ServletHolder( new
MyReloadingWicketServlet() );
      wicketSH.setInitParameter( "applicationClassName",
WicketApplication.class.getName() );
      ctx.addServlet( wicketSH, "/*" );

         XmlConfiguration confJettyEnv = new
XmlConfiguration( 
RunInJetty.class.getResourceAsStream("/WEB-INF/jetty-env.xml") ); 
         confJettyEnv.configure(ctx);
         
         
         javax.naming.Reference ref = 
               new javax.naming.Reference(

javax.enterprise.inject.spi.BeanManager.class.getName(),
                  //"org.jboss.weld.resources.ManagerObjectFactory",

org.jboss.weld.resources.ManagerObjectFactory.class.getName(),
                  null 
               );

         //BeanManagerLookup.getBeanManagerJndiName();
         Resource resource = new
org.mortbay.jetty.plus.naming.Resource( ctx, "BeanManager", ref );
         EnvEntry envEntry = new
org.mortbay.jetty.plus.naming.EnvEntry( ctx, "BeanManager", ref, true );

         InitialContext ic = new InitialContext();
         NameParser parser = ic.getNameParser("");
         //Name prefix = NamingEntryUtil.getNameForScope(scope);
         Name prefix = parser.parse("").add("_");

         //bind the NamingEntry into the context
         Name namingEntryName =
NamingEntryUtil.makeNamingEntryName(parser, "BeanManager");
         namingEntryName.addAll(0, prefix);
         String namingEntryNameString = namingEntryName.toString();
         NamingUtil.bind( ic, namingEntryNameString, envEntry );

         //bind the object as well
         Name objectName = parser.parse("BeanManager");
         objectName.addAll(0, prefix);
         String objectNameString = objectName.toString();
         NamingUtil.bind(ic, objectNameString, ref);
         NamingUtil.bind(ic, "BeanManager", ref);
         NamingUtil.bind(ic, "/BeanManager", ref);
         NamingUtil.bind(ic, "env/BeanManager", ref);
         NamingUtil.bind(ic, "/env/BeanManager", ref);
         NamingUtil.bind(ic, "_/BeanManager", ref);
         NamingUtil.bind(ic, "_/env/BeanManager", ref);

         // Add WELD listener by hand.
         ctx.addEventListener( new
org.jboss.weld.environment.servlet.Listener() );

_______________________________________________
jetty-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/jetty-users

Reply via email to