Vaadin, Glassfish v3 and Weld(JSR 330)

Hi,

Is there some tutorial for using Weld and Vaadin?

Thanks

Hi, Eric,

In order to run Vaadin with Weld in Tomcat I’ve written two classes

public abstract class WeldApplication extends Application {

InjectionTarget<WeldApplication> injectionTarget;
CreationalContext<WeldApplication> creationalContext;

@Override
public final void close() {
    super.close();
    injectionTarget.preDestroy(this);
    injectionTarget.dispose(this);
    creationalContext.release();
}

}

public class WeldApplicationServlet extends ApplicationServlet {

@Inject
private BeanManager beanManager;
private InjectionTarget<WeldApplication> injectionTarget;

@Override
@SuppressWarnings({"unchecked"})
public void init(ServletConfig servletConfig) throws ServletException {
    super.init(servletConfig);
    if (beanManager == null) {
        beanManager = (BeanManager) getServletContext().getAttribute(BeanManager.class.getName());
    }
    injectionTarget = (InjectionTarget<WeldApplication>)
            beanManager.createInjectionTarget(beanManager.createAnnotatedType(getApplicationClass()));
}

@Override
protected Application getNewApplication(HttpServletRequest request) throws ServletException {
    CreationalContext<WeldApplication> context = beanManager.createCreationalContext(null);
    WeldApplication application = injectionTarget.produce(context);
    injectionTarget.inject(application, context);
    injectionTarget.postConstruct(application);
    application.injectionTarget = injectionTarget;
    application.creationalContext = context;
    return application;
}

}

I have my application extending WeldApplication (the scope is default - @Dependent), and the contents of my web.xml is like the following

org.jboss.weld.environment.servlet.Listener ApplicationServlet WeldApplicationServlet application MyApplication ApplicationServlet /app/* /VAADIN/*

Cheers,
Taras

Hi!

Don’t have a tutorial to point to, but a small hint: use nightly build ( http://vaadin.com/download/nightly/6.2/ ) with glassfish 3. There is a nasty bug in glassfish 3 classloader that prevents Vaadin app to start without gwt-user jar on classpath.

6.2.1 should come out pretty soon, which will add a workaround for it.

cheer,s
matti

It’s been released now.

http://vaadin.com/download