0

I migrate a project from Java EE 6 to Java EE 7. As dependencies I have javaee 7.0, payara-embedded-all4.1.1.154
I migrate beans.xml to:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
    bean-discovery-mode="all">
    <interceptors>
        <class>com.myproject.business.base.util.LoggingInterceptor</class>
    </interceptors>
</beans>

Also the web.xml to:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    id="WebApp_ID" version="3.1">
    <display-name>com.myproject.business.server</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>

    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>myprojectRealm</realm-name>
    </login-config>

    <security-constraint>
        <display-name>Basic Protection</display-name>
        <web-resource-collection>
            <web-resource-name>REST</web-resource-name>
            <description />
            <url-pattern>/myproject/*</url-pattern>
            <http-method>GET</http-method>
            <http-method>POST</http-method>
            <http-method>PUT</http-method>
            <http-method>DELETE</http-method>
        </web-resource-collection>
        <auth-constraint>
            <description />
            <role-name>com.myproject.ftc.Reader</role-name>
            <role-name>com.myproject.um.Administrator</role-name>
            <role-name>com.myproject.ftc.Skriptimporteur</role-name>
            <role-name>com.myproject.operations.Admin</role-name>
        </auth-constraint>
    </security-constraint>
    <security-role>
        <role-name>com.myproject.ftc.Reader</role-name>
    </security-role>
    <security-role>
        <role-name>com.myproject.ftc.Exporter</role-name>
    </security-role>
    <security-role>
        <role-name>com.myproject.operations.Admin</role-name>
    </security-role>

</web-app>

And is replaced sun-web.xml with glassfish-web.xml:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app>
    <context-root>/com.myproject.business.server</context-root>
</glassfish-web-app>

Everything is compilable but I have a problem when I want to deploy the app to payara:

2016-03-09T17:16:19.466+0200|Severe: Exception during lifecycle processing
java.lang.RuntimeException: EJB Container initialization error
    at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:237)
    at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:291)
    at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:99)
    at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:206)
    at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:314)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:496)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219)
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:487)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:539)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:535)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:360)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:534)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:565)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:557)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:360)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:556)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1464)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:109)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1846)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1722)
    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534)
    at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224)
    at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:189)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
    at com.myproject.exception.handler.__EJB31_Generated__ExceptionDelegate__Intf____Bean__.registerExceptionHandler(Unknown Source)
    at com.myproject.exception.handler.ExceptionDelegate.init(ExceptionDelegate.java:40)
    at com.myproject.exception.handler.ExceptionDelegate.<init>(ExceptionDelegate.java:31)
    at com.myproject.exception.handler.__EJB31_Generated__ExceptionDelegate__Intf____Bean__.<init>(Unknown Source)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at java.lang.Class.newInstance(Class.java:442)
    at com.sun.ejb.containers.BaseContainer.instantiateOptionalEJBLocalBusinessObjectImpl(BaseContainer.java:3867)
    at com.sun.ejb.containers.AbstractSingletonContainer.initializeHome(AbstractSingletonContainer.java:216)
    at com.sun.ejb.containers.SingletonContainerFactory.createContainer(SingletonContainerFactory.java:72)
    at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:225)
    ... 43 more

What is also strange is that it gives me EJB31_Generated and I added a maven-ejb-plugin with version 3.2 and have Payara 4.1.1.154.

Anyone has any idea why?

Arjan Tijms
  • 37,782
  • 12
  • 108
  • 140
Mihai Catan
  • 106
  • 9
  • It gives you *EJB31_Generated* because you're probably referring EJB 3.1 in your *ejb-jar.xml* file. Do you have any `@Startup` beans? – António Ribeiro Mar 11 '16 at 14:31
  • I don't have an _ejb-jar.xml_. I read (JEE7 tutorial chapter 16.12) that is optional. I don't have a @Startup bean. I use maven-ejb-plugin to specify the ejb version – Mihai Catan Mar 13 '16 at 07:24
  • What changes have you made to your EJBs? – António Ribeiro Mar 23 '16 at 20:56
  • No changes, just replace the javaee 6 with javaee 7, glassfish-embedded-all 3.x with payara-embedded-all and replace some imports from classes where was the case. – Mihai Catan Mar 25 '16 at 06:49
  • Can't you try to make a [mcve] in order to narrow your problem? For instance, can't you try replicate the problem you're having using just one EJB? – António Ribeiro Mar 25 '16 at 11:18
  • 1
    I solved it. Was about to register some resources(sorry can't format well it): @ApplicationPath("project") public class RESTConfig extends Application { @Override public Set> getClasses() { final Set> resources = new HashSet>(); // Add your resources. resources.add(AdminConsoleResource.class); // Add additional features such as support for Multipart. resources.add(MultiPartFeature.class); return resources; } } – Mihai Catan Mar 29 '16 at 07:07
  • Good! :) Then, if you don't mind, place your comment as an answer and mark it as solved. – António Ribeiro Mar 29 '16 at 07:28

1 Answers1

0

I solved it. Was about to register some resources:

@ApplicationPath("project") 
public class RESTConfig extends Application { 

  @Override public Set<Class<?>> getClasses() { 
    final Set<Class<?>> resources = new HashSet<Class<?>>(); // Add your resources. 

    resources.add(AdminConsoleResource.class); // Add additional features such as support for Multipart. 

    resources.add(MultiPartFeature.class); 

    return resources; 
  } 
}
Paul Roub
  • 36,322
  • 27
  • 84
  • 93
Mihai Catan
  • 106
  • 9