【问题标题】:An occasional java.lang.NullPointerException while running Java EE applications on GlassFish Server在 GlassFish Server 上运行 Java EE 应用程序时偶尔出现 java.lang.NullPointerException
【发布时间】:2015-10-01 14:37:11
【问题描述】:

使用运行 Java EE 应用程序,

  • GlassFish 服务器 4.1 / Java EE 7
  • EclipseLink 2.6.0 具有 JPA 2.1
  • Mojarra 2.3.0-m02
  • PrimeFaces 5.2 最终版
  • OmniFaces 2.1 最终版
  • MySQL 5.6.11
  • JDK 8u45

在重新部署应用程序时偶尔会抛出一个频率较低的java.lang.NullPointerException,但不会对应用程序造成任何损害。

Severe:   An exception or error occurred in the container during the request processing
java.lang.NullPointerException
    at org.glassfish.grizzly.http.util.HttpCodecUtils.parseHost(HttpCodecUtils.java:69)
    at org.glassfish.grizzly.http.HttpRequestPacket.doParseHostHeader(HttpRequestPacket.java:723)
    at org.glassfish.grizzly.http.HttpRequestPacket.parseHostHeader(HttpRequestPacket.java:717)
    at org.glassfish.grizzly.http.HttpRequestPacket.serverName(HttpRequestPacket.java:283)
    at org.glassfish.grizzly.http.server.Request.getServerName(Request.java:1246)
    at org.apache.catalina.connector.Request.getServerName(Request.java:1882)
    at org.apache.catalina.connector.RequestFacade.getServerName(RequestFacade.java:535)
    at com.sun.enterprise.web.connector.coyote.PECoyoteConnector.requestEndEvent(PECoyoteConnector.java:1307)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:422)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)
    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)

Warning:   GRIZZLY0013: Exception during FilterChain execution
java.lang.NullPointerException
    at org.glassfish.grizzly.attributes.Attribute.remove(Attribute.java:227)
    at org.glassfish.grizzly.http.server.HttpServerFilter.afterService(HttpServerFilter.java:383)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:260)
    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)

它来自哪里,为什么?我既没有这个例外背后的原因,也没有应用程序似乎对此负责。

【问题讨论】:

  • 这是公共服务器吗?您是否使用 IP 和用户代理维护访问日志?您是否已经确定它更可能是人类还是机器人?该异常表明 HTTP Host 标头丢失或损坏,这很可能是由黑客探测请求以查找易受攻击的服务器引起的(因为没有一个理智的网络浏览器会导致这种情况)。
  • 也不像服务器。它只是在本地计算机上运行以进行练习,而不是在生产环境中。

标签: jakarta-ee glassfish java-ee-7 glassfish-4.1


【解决方案1】:

我一直遇到这个问题,直到我创建了一个专门运行 GF 的新用户并安装了最新版本的 JDK 1.8(我正在运行 linux 作为我的操作系统)

我创建了一个用户:gfadmin

创建新用户:useradd -d /home/gfadmin -g staff -s /bin/bash gfadmin

然后从 oracle 下载 JDK 1.8.0_91: (为您的操作系统和硬件获取适当的 tar.gz 文件) http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

将 tar.gz 文件放入/home/gfadmin

gunzip 并解压缩文件。它应该创建一个目录:

/home/gfadmin/jdk1.8.0_91

编辑 gfadmin users .bash_profile 文件并添加以下三行:

JAVA_HOME="/home/gfadmin/jdk1.8.0_91"
PATH="$JAVA_HOME/bin:$PATH"
export JAVA_HOME PATH

获取 .bash_profile:

. ./.bash_profile

确认您使用的是刚刚安装的 java 版本,1.8.0_91:

java -version

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    相关资源
    最近更新 更多