Vaadin 7 and EJB3

Hello!

I have read https://vaadin.com/wiki/-/wiki/Main/Implementing%20Enterprise%20Web%20applications%20with%20Vaadin so far and tried this out.

I have some troubles when it comes down to extending AbstractCdiApplication or theAbstractCdiApplicationServlet, although I have put the cdi-library in the Web-inf/lib folder of my vaadin project. Eclipse doesn’t recognise this class.

Can you guess the reason for this? I have checked the paths and it seems ok so far, as I have followed your guidelines in the link.

Hence, I cannot run the ear/ejb-components as desired.

Thanks, Petra

That article is written for Vaadin6, and will unfortunately not work with Vaadin7 since a lot of the core stuff around servlets and applications has been changed. JavaEE support in Vaadin7 is still being developed; hopefully we will get some articles for that soon :slight_smile:

You could also have a look at
https://github.com/vaadin/vaadin-cdi-integration
that will most likely be released as an official Vaadin add-on quite soon.

Hi,
anything any news about EJB integration???

We are switching to Vaadin 7 and now I’m stacked trying to use EJB in our UI.

For V6 we have been using @Ejb in servlet and directly creating the Application instance in the servlet passing some references to this injected EJBs. With Vaadin 6
we have been using getNewApplication(HttpServletRequest request) for creating the application manually and passing EJB references container to our Application class.

How can I do the same for Vaadin7 how can I pass EJB references to UI class. The VaadinSession is of no help I suppose.

Any hints??

EDIT: probably I can use the VaadinServlet.getCurrent() static method to get the servlet instance, I’m not sure it is the right way.

Thanks in beforehand

Martin

I think nutz (http://code.google.com/p/nutz/) framework can provide most of j2ee,to see it is or not what you want!

The easiest way of getting all the injections working with Vaadin 7 is probably to use
https://github.com/vaadin/vaadin-cdi-integration
which is planned be released as an official Apache 2 licensed add-on quite soon.

Hi Marin,

My team is also planning to migrate from Vaadin 6 to 7. I’m currently checking if what we are doing is still possible with 7 and I’m in front of the same issue as you were.

Did you finaly find out how to inject EJBs into a Vaadin 7 application ? (as the AbstractApplicationServlet doesn’t exist anymore and that we have to deal with UI instead of Application)

Thanks in advance,
Greg.

Hi again,

I was able to inject EJBs to my UI but I don’t know if what I did is a “viable” solution. Actually I cannot use JEE 6 CDI (because Weblogic 11g is only JEE 5 compliant) so here is what I did :

public class MyVaadinUIProvider extends DefaultUIProvider {

	private static final long serialVersionUID = 1L;
	
	    private VaadinUI vaadinUI;
	    
	    private transient MyEjb myEjb;

	    @Override
	    public UI createInstance(UICreateEvent event) {
	    	vaadinUI = new VaadinUI();
	    	vaadinUI.setMyEjb(myEjb);
	    	return vaadinUI;
	    }
...
}
public class MyServlet extends VaadinServlet {

	private static final long serialVersionUID = 1L;
	
	@EJB
	MyEjb myEjb;

	
    @SuppressWarnings("serial")
    private final SessionInitListener sessionInitListener = new SessionInitListener() {
        
        @Override
        public void sessionInit(SessionInitEvent event) throws ServiceException {
            
            @SuppressWarnings("unused")
            VaadinService service = event.getService();
            final VaadinSession session = event.getSession();

            MyVaadinUIProvider uiProvider = new MyVaadinUIProvider();
            uiProvider.setMyEjb(myEjb);
            session.addUIProvider(uiProvider);
            
        }
    };
    
    public void init(ServletConfig servletConfig) throws ServletException {
        super.init(servletConfig);
        getService().addSessionInitListener(sessionInitListener);
    }
...
}
public class VaadinUI extends UI {

	private MyEjb myEjb;

   @Override
    public void init(VaadinRequest request)
    {

...
}

It’s working I can use my EJB but maybe there is a better way to do that ? (without JEE 6 CDI ?)

Hi Gregory,

I just tried your solution but it keeps geeting me the error:

server.log (I’m using Glassfish 3.1.2)

INFO: PWC1412: WebModule[null]
ServletContext.log():PWC1409: Marking servlet Testtest Application as unavailable
WARNING: StandardWrapperValve[Testtest Application]
: PWC1382: Allocate exception for servlet Testtest Application
java.lang.NoSuchMethodException: com.example.testtest.MyServlet.()
at java.lang.Class.getConstructor0(Class.java:2730)
at java.lang.Class.getConstructor(Class.java:1676)
at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.createManagedObject(InjectionManagerImpl.java:305)
at com.sun.enterprise.web.WebContainer.createServletInstance(WebContainer.java:729)
at com.sun.enterprise.web.WebModule.createServletInstance(WebModule.java:1959)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1272)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:1079)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:189)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:722)

I’ve changed the web.xml file so the points to MyServlet class.

I’ve also tried to remove the parameter from the init method of MyServlet class but the error is still the same.

Can you please give any idea what is wrong ?

Thanks a lot ,

Klaudeta

[code]

[/code]And to add to my previous post the message that comes from the browser is:



HTTP Status 500 -

type Exception report

message


descriptionThe
server encountered an internal error () that prevented it from fulfilling this request.


exception

javax.servlet.ServletException: PWC1392: Error instantiating servlet class com.example.testtest.MyServlet

root cause

com.sun.enterprise.container.common.spi.util.InjectionException: Error creating managed object for class: class com.example.testtest.MyServlet

root cause

java.lang.NoSuchMethodException: com.example.testtest.MyServlet.()

note
The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 3.1.2.2 logs.

CDI-integreation to be released soon? That’s a year ago, and there seems to be no progress. CDI is kindof nice when creating enterprise apps. CDI seems to be working fine with Vaadin 7 and Wildfly 8, but CDI-integrasion is still an old alpha-release not meant for production. Not very comfortable … why not make the effort to at least get to beta-level now?

Seems there is an update coming up - https://vaadin.com/forum#!/category/203413

Good news :slight_smile:

Uh, link should have been https://vaadin.com/forum#!/thread/5141073

I dont know if it helps u, below i attach a way to inject EJB without CDI integration.
My war file and ejb jar is packed into one ear so i can use local interface.

[code]
SysLocalInterface instance;

@Override
protected void init(VaadinRequest request) {
try {
InitialContext ctx = new InitialContext();
instance = (SysLocalInterface) ctx.lookup(“java:comp/env/SysLocalInterface”));

    } catch (NamingException ex) {
        Logger.getLogger(MyVaadinUI.class.getName()).log(Level.SEVERE, null, ex);
    }

[/code]And web.xml

<ejb-local-ref> <ejb-ref-name>SysLocalInterface</ejb-ref-name> <local>pl.example.ejb.SysLocalInterface</local> </ejb-local-ref> Put the instance into the global data so u have access to your interface via whole application.
regards

I can inject ejb to UI successfully but It didn’t work on View. Can anybody help, please ?

 @Local
public interface MediaManagerService {

@Stateless
public class MediaManagerServiceImpl implements MediaManagerService, Serializable {
    
        private static final long serialVersionUID = -3484115607954217804L;
    
        @PersistenceContext(name="MediaManagerPersistenceUnit", 
                            unitName="MediaManagerPersistenceUnit")
        private EntityManager _em;

I can inject service successful in UI by this code:
[code]
@CDIUI
public class MainUI extends ManagedUI {
private Navigator _navigator;

    @Inject
    private CDIViewProvider _viewProvider;

    @Inject
    private MediaManagerService _service;

[/code]
But in the view, it always throws null.
[code]
@CDIView(“MovieView”)
public class MovieView extends ManagedComponent implements View {
public static final String NAME = “MovieView”;

    @Inject
    private MediaManagerService _service;

[/code]
The _service always throws null in the View.
This is from the console:

10:17:25,052 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-5) Attempting to retrieve view name from string ""
10:17:25,052 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-5) Looking for view with name ""
10:17:25,053 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-5) com.tien113.ui.MovieView is annotated, the viewName is "MovieView"
10:17:25,053 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-5) com.tien113.ui.LoginView is annotated, the viewName is ""
10:17:25,053 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-5) Bean Managed Bean [class com.tien113.ui.LoginView]
 with qualifiers [@Any @Default]
 with viewName "" is one alternative
10:17:25,054 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-5) Attempting to retrieve view with name ""
10:17:25,054 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-5) Looking for view with name ""
10:17:25,054 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-5) com.tien113.ui.MovieView is annotated, the viewName is "MovieView"
10:17:25,055 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-5) com.tien113.ui.LoginView is annotated, the viewName is ""
10:17:25,055 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-5) Bean Managed Bean [class com.tien113.ui.LoginView]
 with qualifiers [@Any @Default]
 with viewName "" is one alternative
10:17:25,055 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-5) Created new creational context for current view org.jboss.weld.context.CreationalContextImpl@5182605a
10:17:25,071 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-5) Returning view instance com.tien113.ui.LoginView@6713e65a
10:17:27,104 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-9) Attempting to retrieve view name from string "MovieView"
10:17:27,104 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-9) Looking for view with name "MovieView"
10:17:27,104 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-9) com.tien113.ui.MovieView is annotated, the viewName is "MovieView"
10:17:27,104 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-9) Bean Managed Bean [class com.tien113.ui.MovieView]
 with qualifiers [@Any @Default]
 with viewName "MovieView" is one alternative
10:17:27,105 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-9) com.tien113.ui.LoginView is annotated, the viewName is ""
10:17:27,105 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-9) Attempting to retrieve view with name "MovieView"
10:17:27,105 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-9) Looking for view with name "MovieView"
10:17:27,105 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-9) com.tien113.ui.MovieView is annotated, the viewName is "MovieView"
10:17:27,105 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-9) Bean Managed Bean [class com.tien113.ui.MovieView]
 with qualifiers [@Any @Default]
 with viewName "MovieView" is one alternative
10:17:27,105 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-9) com.tien113.ui.LoginView is annotated, the viewName is ""
10:17:27,106 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-9) Releasing creational context for current view org.jboss.weld.context.CreationalContextImpl@5182605a
10:17:27,106 INFO  [com.vaadin.cdi.CDIViewProvider]
 (default task-9) Created new creational context for current view org.jboss.weld.context.CreationalContextImpl@5bfe6e21
10:17:27,164 SEVERE [com.vaadin.server.DefaultErrorHandler]
 (default task-9) : java.lang.NullPointerException
    at com.tien113.ui.MovieView.genreFilterComboBox(MovieView.java:180) [classes:]

    at com.tien113.ui.MovieView.movieLayout(MovieView.java:80) [classes:]

    at com.tien113.ui.MovieView.<init>(MovieView.java:70) [classes:]

    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [rt.jar:1.8.0_20-ea]

    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) [rt.jar:1.8.0_20-ea]

    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [rt.jar:1.8.0_20-ea]

    at java.lang.reflect.Constructor.newInstance(Constructor.java:408) [rt.jar:1.8.0_20-ea]

    at org.jboss.weld.injection.ConstructorInjectionPoint.newInstance(ConstructorInjectionPoint.java:110) [weld-core-impl-2.1.2.Final.jar:2014-01-09 09:23]

    at org.jboss.weld.injection.ConstructorInjectionPoint.invokeAroundConstructCallbacks(ConstructorInjectionPoint.java:84) [weld-core-impl-2.1.2.Final.jar:2014-01-09 09:23]

    at org.jboss.weld.injection.ConstructorInjectionPoint.newInstance(ConstructorInjectionPoint.java:71) [weld-core-impl-2.1.2.Final.jar:2014-01-09 09:23]

    at org.jboss.weld.injection.producer.AbstractInstantiator.newInstance(AbstractInstantiator.java:28) [weld-core-impl-2.1.2.Final.jar:2014-01-09 09:23]

    at org.jboss.weld.injection.producer.BasicInjectionTarget.produce(BasicInjectionTarget.java:85) [weld-core-impl-2.1.2.Final.jar:2014-01-09 09:23]

    at org.jboss.weld.injection.producer.BeanInjectionTarget.produce(BeanInjectionTarget.java:183) [weld-core-impl-2.1.2.Final.jar:2014-01-09 09:23]

    at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:149) [weld-core-impl-2.1.2.Final.jar:2014-01-09 09:23]

    at com.vaadin.cdi.internal.UIBeanStore.getBeanInstance(UIBeanStore.java:57) [vaadin-cdi-1.0.0.alpha2.jar:1.0.0.alpha2]

    at com.vaadin.cdi.internal.UIScopedContext.get(UIScopedContext.java:105) [vaadin-cdi-1.0.0.alpha2.jar:1.0.0.alpha2]

    at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:733) [weld-core-impl-2.1.2.Final.jar:2014-01-09 09:23]

    at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:753) [weld-core-impl-2.1.2.Final.jar:2014-01-09 09:23]

    at org.jboss.weld.util.ForwardingBeanManager.getReference(ForwardingBeanManager.java:61) [weld-core-impl-2.1.2.Final.jar:2014-01-09 09:23]

    at org.jboss.weld.bean.builtin.BeanManagerProxy.getReference(BeanManagerProxy.java:80) [weld-core-impl-2.1.2.Final.jar:2014-01-09 09:23]

    at com.vaadin.cdi.CDIViewProvider.getView(CDIViewProvider.java:213) [vaadin-cdi-1.0.0.alpha2.jar:1.0.0.alpha2]

    at com.vaadin.navigator.Navigator.navigateTo(Navigator.java:512) [vaadin-server-7.3.0.beta1.jar:7.3.0.beta1]

    at com.tien113.ui.LoginView.lambda$0(LoginView.java:80) [classes:]

    at com.tien113.ui.LoginView$$Lambda$2/843139639.buttonClick(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_20-ea]

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_20-ea]

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_20-ea]

    at java.lang.reflect.Method.invoke(Method.java:483) [rt.jar:1.8.0_20-ea]

    at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:508) [vaadin-server-7.3.0.beta1.jar:7.3.0.beta1]

    at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:198) [vaadin-server-7.3.0.beta1.jar:7.3.0.beta1]

    at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:161) [vaadin-server-7.3.0.beta1.jar:7.3.0.beta1]

    at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:978) [vaadin-server-7.3.0.beta1.jar:7.3.0.beta1]

    at com.vaadin.ui.Button.fireClick(Button.java:393) [vaadin-server-7.3.0.beta1.jar:7.3.0.beta1]

    at com.vaadin.ui.Button$1.click(Button.java:57) [vaadin-server-7.3.0.beta1.jar:7.3.0.beta1]

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_20-ea]

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_20-ea]

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_20-ea]

    at java.lang.reflect.Method.invoke(Method.java:483) [rt.jar:1.8.0_20-ea]

    at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:168) [vaadin-server-7.3.0.beta1.jar:7.3.0.beta1]

    at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:118) [vaadin-server-7.3.0.beta1.jar:7.3.0.beta1]

    at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:281) [vaadin-server-7.3.0.beta1.jar:7.3.0.beta1]

    at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:174) [vaadin-server-7.3.0.beta1.jar:7.3.0.beta1]

    at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:93) [vaadin-server-7.3.0.beta1.jar:7.3.0.beta1]

    at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41) [vaadin-server-7.3.0.beta1.jar:7.3.0.beta1]

    at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1406) [vaadin-server-7.3.0.beta1.jar:7.3.0.beta1]

    at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:237) [vaadin-server-7.3.0.beta1.jar:7.3.0.beta1]

    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]

    at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:130) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.websockets.jsr.JsrWebSocketFilter.doFilter(JsrWebSocketFilter.java:123) [undertow-websockets-jsr-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]

    at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45) [undertow-core-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) [undertow-core-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) [undertow-core-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]

    at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:177) [undertow-core-1.0.15.Final.jar:1.0.15.Final]

    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:727) [undertow-core-1.0.15.Final.jar:1.0.15.Final]

    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_20-ea]

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_20-ea]

    at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_20-ea]

It threw error on the line I use _service.Can anyone help me, please…

Although, CDI addon still is in alpha stage, maybe You should try to deploy your application to different JEE server. I tested CDI year ago on Glassfish4 and I had problems only with Push feature.

I’m using Wildfly 8.1.
I can use Google Guice instead of CDI but Google Guice didn’t work with JTA, it only works with RESOURCE_LOCAL. That’s why I want to give CDI a try.

Wildfly (JBoss) and GlassFish (Oracle) may have differences in implementation of the CDI. Deploy your application to GlassFish4, and test what happen next.

Finally, I make it work. Because I call _service in the constructor, the _service didn’t initiate yet so it’s null. In fact, the _service initiate after the constructer. I put everything out of constructor and it works perfectly now.