首页 > 解决方案 > Payara Glassfish 服务器部署:列出目录时出错

问题描述

我的 Java EE 项目在 Glassfish 服务器中遇到问题。每当我开始编码时,我都会启动我的本地 Glassfish 服务器并将我的 Java EE 项目部署到该服务器。部署完成后,我将开始编码。每次我添加或修改项目源代码时,项目都会重新部署。重新部署项目时,服务器日志会显示此错误(请参阅以下屏幕截图)。

  keepstate options resolved to true, saving appId 106861107804831744 for application javaProject.|#]
  keepstate options resolved to true, saving appId 106861107804831744 for application javaProject.|#]
  Persistent Timers will not be destroyed since keepstate is true for application javaProject|#]
  Persistent Timers will not be destroyed since keepstate is true for application javaProject|#]
  Error when listing directory
 Error when listing directory
java.nio.file.NoSuchFileException: C:\payara5\glassfish\domains\domain1\generated\ejb\javaProject
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79)
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
    at sun.nio.fs.WindowsDirectoryStream.<init>(WindowsDirectoryStream.java:86)
    at sun.nio.fs.WindowsFileSystemProvider.newDirectoryStream(WindowsFileSystemProvider.java:518)
    at java.nio.file.Files.newDirectoryStream(Files.java:457)
    at java.nio.file.Files.list(Files.java:3451)
    at com.sun.enterprise.loader.DirWatcher$ParentWatcher.register(DirWatcher.java:208)
    at com.sun.enterprise.loader.DirWatcher.registerInFilesystem(DirWatcher.java:127)
    at com.sun.enterprise.loader.DirWatcher.register(DirWatcher.java:87)
    at com.sun.enterprise.loader.ASURLClassLoader$URLEntry.init(ASURLClassLoader.java:950)
    at com.sun.enterprise.loader.ASURLClassLoader$URLEntry.<init>(ASURLClassLoader.java:935)
    at com.sun.enterprise.loader.ASURLClassLoader.appendURL(ASURLClassLoader.java:266)
    at com.sun.enterprise.loader.ASURLClassLoader.addURL(ASURLClassLoader.java:249)
    at org.glassfish.javaee.full.deployment.EarHandler.getClassLoader(EarHandler.java:463)
    at org.glassfish.deployment.common.DeploymentContextImpl.createClassLoader(DeploymentContextImpl.java:248)
    at org.glassfish.deployment.common.DeploymentContextImpl.createDeploymentClassLoader(DeploymentContextImpl.java:229)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.prepare(ApplicationLifecycle.java:415)
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:538)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:558)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:554)
    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:553)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:584)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:576)
    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:575)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1496)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:120)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1878)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1754)
    at org.glassfish.deployment.admin.ReDeployCommand.execute(ReDeployCommand.java:131)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:558)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:554)
    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:553)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:584)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:576)
    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:575)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1496)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:120)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1878)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1754)
    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:564)
    at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:251)
    at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:166)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:33)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
    at java.lang.Thread.run(Thread.java:748)

此错误并非每次都发生,有时重新部署完全可以正常工作而不会出现此错误。此外,虽然存在错误,但我仍然能够测试我的代码(浏览器能够加载更新版本)。

我检查了路径(参见上面的屏幕截图)并确保每个 Windows 用户都可以访问它,但问题仍然存在。我还在网上对我的问题进行了一些研究,没有一个解决方案适合我的情况。在这种情况下,我决定忽略错误,继续编写代码。但是当这个错误多次发生时,会引入一个新的错误(参考下面的屏幕)。

javax.servlet.servletexception: GC overhead limit exceeded

我还对第二个错误进行了一些研究,并且已经将服务器 JVM 堆大小增加到 3500。但这两个问题仍未解决(这就是我在这里寻求解决方案的原因)。

这里有人对我的问题有任何解决方案吗?(如果您需要任何额外信息来理解我的问题,请告诉我)。

我的设置:

  1. JDK 和 JRE:1.8.0_201

  2. Payara Glassfish 服务器 5.194

标签: javawebglassfishpayarajava-ee-8

解决方案


我认为这与“保存时部署”设置有关。我个人仅在使用 xhtml 时使用此设置,有时使用 cdi bean,但在编码 ejb 时将其关闭


推荐阅读