2015-10-23 37 views
5

EclipseLink 2.6.1 (final) löst die folgende Ausnahme aus, wenn eine Java EE-Anwendung auf GlassFish Server 4.1 bereitgestellt wird. Dies war vor dem Upgrade von 2.6.0 nicht geschehen.java.lang.NullPointerException bei org.eclipse.persistence.platform.server.ServerPlatformUtils.createServerPlatform (ServerPlatformUtils.java)

Warning: java.lang.NullPointerException 
    at org.eclipse.persistence.platform.server.ServerPlatformUtils.createServerPlatform(ServerPlatformUtils.java:101) 
    at org.eclipse.persistence.sessions.factories.SessionManager.init(SessionManager.java:77) 
    at org.eclipse.persistence.sessions.factories.SessionManager.<clinit>(SessionManager.java:71) 
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.addSessionToGlobalSessionManager(EntityManagerSetupImpl.java:907) 
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.initSession(EntityManagerSetupImpl.java:2676) 
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:675) 
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:205) 
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:305) 
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:337) 
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:303) 
    at org.glassfish.persistence.jpa.JPADeployer$2.visitPUD(JPADeployer.java:451) 
    at org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:510) 
    at org.glassfish.persistence.jpa.JPADeployer.iterateInitializedPUsAtApplicationPrepare(JPADeployer.java:492) 
    at org.glassfish.persistence.jpa.JPADeployer.event(JPADeployer.java:395) 
    at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:131) 
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:487) 
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219) 
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491) 
    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:201) 
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175) 
    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:284) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) 
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561) 
    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:565) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545) 
    at java.lang.Thread.run(Thread.java:745) 

Obwohl es ein java.lang.NullPointerException, die LOG Ebene ist Warning.

org.eclipse.persistence.sessions.factories.SessionManager#init() ist wie folgt definiert (obwohl grepcode RC1 zeigt).

74  private static void init() { 
75   String platformClass = ServerPlatformUtils.detectServerPlatform(null); 
76   try { 
77    detectedPlatform = ServerPlatformUtils.createServerPlatform(null, platformClass, SessionManager.class.getClassLoader()); 
78   } catch (NullPointerException npe) { 
79    //some platforms may not be handling 'null' session well, 
80    //so be defensive here and only log throwable here 
81    detectedPlatform = null; 
82    LOG.logThrowable(SessionLog.WARNING, AbstractSessionLog.CONNECTION, npe); 
83   } 
84   supportPartitions = detectedPlatform != null && detectedPlatform.usesPartitions(); 
85   if (supportPartitions) { 
86    managers = new ConcurrentHashMap<String, SessionManager>(4, 0.9f, 1); 
87    SessionManager sm = initializeManager(); 
88    manager = sm; 
89    managers.put(sm.context, sm); 
90   } else { 
91    manager = initializeManager(); 
92   } 
93  } 

Wo createServerPlatform(DatabaseSession session, String platformClass, ClassLoader loader) wirft ein java.lang.NullPointerException, wenn platformClassnull ist.

97  public static ServerPlatform createServerPlatform(DatabaseSession session, String platformClass, ClassLoader loader) { 
98   if (platformClass == null) { 
99    throw new NullPointerException(); 
100  } 

      //... 
     } 

Es scheint nach dem Code normal zu sein. Ist es?

+0

Wie setzen Sie Eclipselink bei Glassfish ein? –

+0

Wie üblich mit einer IDE, NetBeans in diesem Fall, die einen Deployer namens Apache Ant (ich benutze keine Apache Maven), die die Aufgabe der Bereitstellung von Anwendungen. – Tiny

+0

Sie wissen, dass Glassfish bereits eine andere Version von Eclipselink implementiert (ich denke, 2.5.2)? Haben Sie die Glassfish-Implementierung geändert, um mit 2.6.1 zu arbeiten? Wenn Sie das Glas zu einem Krieg hinzufügen, den Sie auf Glassfish bereitstellen, kann es zu Versionskonflikten kommen. –

Antwort

2

Obwohl diese Ausnahme normal zu sein scheint, ist es nicht reproduzierbar mehr in Eclipse 2.6.2 am 22. Dezember veröffentlicht, 2015

Also, wenn Sie über diese Ausnahme zu kümmern geschehen, Eclipse betrachten auf diese Version aktualisieren (2.6.2).