Java 如何使玻璃鱼部分停止

Java 如何使玻璃鱼部分停止,java,glassfish,ear,Java,Glassfish,Ear,我正在使用GlassFish(GlassFish 4)作为JAVA企业应用程序的应用服务器 有时,我需要重新启动它,通常是在fames错误出现时: 找不到中定义的子模块[MyApp_webapp.war] application.xml 为了解决这个错误,我尝试从Glassfish的domaine文件夹中的文件夹应用程序中删除Ear的缓存。要删除该文件夹,我需要先停止服务器 当然,停止服务器不会让其他应用程序运行!这是不好的,尤其是当这些应用程序正在使用时 我尝试创建两个不同的域: 具有以下属性

我正在使用GlassFish(GlassFish 4)作为JAVA企业应用程序的应用服务器

有时,我需要重新启动它,通常是在fames错误出现时:

找不到中定义的子模块[MyApp_webapp.war] application.xml

为了解决这个错误,我尝试从Glassfish的domaine文件夹中的文件夹应用程序中删除Ear的缓存。要删除该文件夹,我需要先停止服务器

当然,停止服务器不会让其他应用程序运行!这是不好的,尤其是当这些应用程序正在使用时

我尝试创建两个不同的域:

具有以下属性的域1和域2:

域1:Glassfish管理控制台url=localhost:4848

<network-listeners>
              <network-listener port="8080" protocol="http-listener-1" transport="tcp" name="http-listener-1" thread-pool="http-thread-pool"></network-listener>
              <network-listener port="8181" protocol="http-listener-2" transport="tcp" name="http-listener-2" thread-pool="http-thread-pool"></network-listener>
              <network-listener port="4848" protocol="admin-listener" transport="tcp" name="admin-listener" thread-pool="admin-thread-pool"></network-listener>
</network-listeners>
 <network-listeners>
          <network-listener port="8081" protocol="http-listener-1" transport="tcp" name="http-listener-1" thread-pool="http-thread-pool"></network-listener>
          <network-listener port="8182" protocol="http-listener-2" transport="tcp" name="http-listener-2" thread-pool="http-thread-pool"></network-listener>
          <network-listener port="4242" protocol="admin-listener" transport="tcp" name="admin-listener" thread-pool="admin-thread-pool"></network-listener>
 </network-listeners>

域2:url=localhost:4242

<network-listeners>
              <network-listener port="8080" protocol="http-listener-1" transport="tcp" name="http-listener-1" thread-pool="http-thread-pool"></network-listener>
              <network-listener port="8181" protocol="http-listener-2" transport="tcp" name="http-listener-2" thread-pool="http-thread-pool"></network-listener>
              <network-listener port="4848" protocol="admin-listener" transport="tcp" name="admin-listener" thread-pool="admin-thread-pool"></network-listener>
</network-listeners>
 <network-listeners>
          <network-listener port="8081" protocol="http-listener-1" transport="tcp" name="http-listener-1" thread-pool="http-thread-pool"></network-listener>
          <network-listener port="8182" protocol="http-listener-2" transport="tcp" name="http-listener-2" thread-pool="http-thread-pool"></network-listener>
          <network-listener port="4242" protocol="admin-listener" transport="tcp" name="admin-listener" thread-pool="admin-thread-pool"></network-listener>
 </network-listeners>

然后我尝试部署两个ear:在域1上部署app1.ear,在域2上部署app2.ear

第一个app1.ear可以在localhost:8080/app1web上启动 第二个app2.ear无法在localhost:8081/app2 web上启动,我在日志文件中遇到以下错误:

[2016-01-27T18:09:44.956+0100][glassfish 4.1][SEVERE][AS-WEB-CORE-00037][javax.enterprise.WEB.CORE][tid:_ThreadID=123 _ThreadName=http-listener-1(5)] [timeMillis:1453914584956][levelValue:1000][[ 在请求处理期间容器中发生异常或错误 java.lang.ClassCastException:org.glassfish.grizzly.config.ContextRootInfo不能强制转换为org.apache.catalina.Context 位于org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAdapter.java:597) 位于org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:353) 位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282) 在com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)上 位于com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) 位于org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201) 位于org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175) 位于org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) 位于org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 位于org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284) 在org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)上 在org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133) 位于org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) 位于org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 位于org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561) 位于org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) 位于org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) 位于org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) 位于org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) 位于org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565) 位于org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545) 运行(Thread.java:745) ]]

我是否缺少在不同域上配置的内容


非常感谢

我认为解决方案是取消部署您的ear存档。选中此项:


glassfish 3.1也是如此,但我认为GF4也是如此。我有时很愚蠢,但这不是glassfish支持运行多个域的原因吗?@Gimby是的,这很有效!另外,还有多个本地节点,因此您可以在
glassfish/nodes/$nodename/$instancename/
中隔离本地独立实例。我尝试了您的解决方案@Mike,可能因为我是glassfish管理新手而遗漏了什么。所以我编辑了我的问题,你能不能,再看一眼我的问题..嗯,问题来了,当我试图重新部署我的耳朵,正如我在问题中提到的。我需要停止服务器并从应用程序文件夹中删除EAR的所有相关文件夹