我从客户端调用一个简单的端点方法。
MyStatus getStatus(Car car) throws NoSuchCarException;
我得到的是:
java.lang.OutOfMemoryError: PermGen space
at com.sun.xml.internal.ws.client.Stub.process(Stub.java:317)
at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:146)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:98)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:129)
at $Proxy124.getStatus(Unknown Source)
at de.Babs.showState(Babs.java:622)
有什么问题? 如何从JAX通信中激活xml-logging?
答案 0 :(得分:0)
问题可能是您的容器或应用程序服务器中部署了两个应用程序。 java.lang.OutOfMemoryError: PermGen space
更多是由于系统的限制(内存)而不是由于编程错误。对于例如这可能意味着没有足够的内存来加载某些资源。确保在每次部署或重新部署后重新启动服务器。
要启用日志记录,只需将所需的log4j
或slf4j
或您正在使用的任何框架添加到服务器的全局库中,然后创建一个log4j.properties
这样的文件(如果您正在使用log4j
):
log4j.rootLogger=INFO,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %X{file} %c{1} - %m%n
####################### YourService ######################
log4j.logger.com.yourservice.servicename=DEBUG,servicename
log4j.additivity.com.yourservice.servicename=false
log4j.logger.servicename=DEBUG,servicename
log4j.additivity.servicename=false
log4j.appender.servicename=org.apache.log4j.DailyRollingFileAppender
log4j.appender.servicename.File=C:\\Servers\\glassfish-3.1.2\\gf-app-logs\\servicename.log
log4j.appender.servicename.DatePattern='.'yyyy-MM-dd
log4j.appender.servicename.layout=org.apache.log4j.PatternLayout
log4j.appender.servicename.layout.ConversionPattern=%d [%t] %-5p %X{file} %c{1} %m%n
log4j.appender.servicename.ImmediateFlush=true
########################################################
我使用的是glassfish 3,所有日志记录都出现在此文件中:C:\\Servers\\glassfish-3.1.2\\gf-app-logs\\servicename.log
。对于例如在glassfish 3中,需要将此log4j.properties
文件添加到:&{base.dir}\glassfish-3.1.2\glassfish3\glassfish\domains\domain1\config