2013-06-29 3 views
1

У меня есть модуль EJB с использованием Netbeans и glassfish 4 и log4j2.
У меня есть синглтонский сеанс Bean с расписанием.
Это мой класс:
Log4j2 на модуле EJB со стеклянной плавкой java.lang.NoClassDefFoundError: org/slf4j/ILoggerFactory

import javax.ejb.EJB; 
import javax.ejb.Schedule; 
import javax.ejb.Singleton; 
import org.apache.logging.log4j.LogManager; 
import org.apache.logging.log4j.Logger; 

@Singleton 
public class MyClass { 

private static final Logger logger = LogManager.getLogger(MyClass.class); 
@EJB 
private MyFacadeLocal myFacade; 

public MyClass() { 
} 

@Schedule(hour = "11", minute = "15", dayOfWeek = "Fri") 
private void doSomthing() { 
    logger.info("Hello"); 
} 
} 

Мне нужно реализовать журнал, но у меня возникают проблемы при развертывании:

INFO: EJB5181:Portable JNDI names for EJB MyClass: [java:global/MyProject-ejb/MyClass, java:global/MyProject-ejb/MyClass!com.mydomain.schedule.MyClass] 
SEVERE: Exception while invoking class org.glassfish.ejb.startup.EjbDeployer load method 
java.lang.RuntimeException: EJB Container initialization error 
at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:234) 
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:313) 
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:493) 
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:527) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:523) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:356) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:522) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:546) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1423) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1500(CommandRunnerImpl.java:108) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1762) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1674) 
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.StaticHttpHandler.service(StaticHttpHandler.java:297) 
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:246) 
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191) 
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168) 
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189) 
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114) 
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838) 
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113) 
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115) 
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55) 
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135) 
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564) 
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544) 
at java.lang.Thread.run(Thread.java:722) 
Caused by: java.lang.NoClassDefFoundError: org/slf4j/ILoggerFactory 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:791) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:188) 
at org.apache.logging.slf4j.SLF4JLoggerContextFactory.<init>(SLF4JLoggerContextFactory.java:34) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 
at java.lang.Class.newInstance0(Class.java:374) 
at java.lang.Class.newInstance(Class.java:327) 
at org.apache.logging.log4j.LogManager.<clinit>(LogManager.java:85) 
at com.mydomain.schedule.MyClass.<clinit>(MyClass.java:51) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 
at java.lang.Class.newInstance0(Class.java:374) 
at java.lang.Class.newInstance(Class.java:327) 
at com.sun.ejb.containers.BaseContainer.instantiateOptionalEJBLocalBusinessObjectImpl(BaseContainer.java:3807) 
at com.sun.ejb.containers.AbstractSingletonContainer.initializeHome(AbstractSingletonContainer.java:222) 
at com.sun.ejb.containers.SingletonContainerFactory.createContainer(SingletonContainerFactory.java:72) 
at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:221) 
... 38 more 
Caused by: java.lang.ClassNotFoundException: org.slf4j.ILoggerFactory 
at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
... 70 more 

Glassfish регистрации работает только со старыми log4j по этому сценарию?

Как это сделать? Благодарю.

ответ

0

Из трассировки стека это похоже, что в пути к классам есть log4j-to-slf4j- [версия] .jar. Это блок адаптера Log4j 2 to SLF4J, который позволяет приложениям, закодированным API Log4j 2, перенаправляться на SLF4J. Наверное, не то, что ты хочешь. (Если это является то, что вы хотите, то вы также нужны SLF4J банки на пути к классам.)

Архив log4j2 загрузки содержит много банок, но вам нужно только LOG4J-API-2.0 и LOG4J-CORE -2.0 банок.

+0

У меня только эти зависимости для log4j-API и log4j-ядра: org.apache.logging.log4j log4j-апи 2,0-beta7 баночка org.apache.logging.log4j log4j-core 2,0-beta7 баночка xav56883728

+0

я что-то забыл ... операционная система Ubuntu 64 бит, и работает с оракулом JDK. Я понятия не имею, как это исправить. :(спасибо – xav56883728

+0

Решено добавить эти файлы "log4j-api-2.0-beta7.jar" log4j-core-2.0-beta7.jar в /usr/lib/jvm/jdk1.7.0_21/jre/lib/ext. способ делать только с зависимостями maven, областью тегов? – xav56883728