2014-10-03 70 views
2

在通过CLI部署EAR,出现此错误:GlassFish的:在部署应用程序IOException异常:无效的zip文件

Exception while deploying the app [EnterpriseLegacy] : java.io.IOException: invalid zip file: file:/home/thufir/glassfish-4.1/glassfish/domains/domain1/application /EnterpriseLegacy/lib/RemoteEJB.jar 

,然而,从Netbeans的IDE中部署相同的EAR罚款。

我认为问题在于EJB模块依赖于远程接口RemoteEJB,它构建为JAR。这个JAR包含在EAR中,但我不相信这是足够的。我试过把它放在glassfish-4.1/glassfish/domains/domain1/lib/ext/glassfish-4.1/glassfish/lib/,但是,这不会解决或更改异常。

问题是RemoteEJB JAR需要在glassfish上可用?在这个EJB实现这个接口之前,它部署得很好。 (在EJB实现远程接口的原因是,这样的EJB可用于Web模块。)

从NetBeans中部署,前后:

[email protected]:~$ 
[email protected]:~$ glassfish-4.1/glassfish/bin/asadmin list-applications 
Nothing to list. 
No applications are deployed to this target server. 
Command list-applications executed successfully. 
[email protected]:~$ 
[email protected]:~$ glassfish-4.1/glassfish/bin/asadmin list-applications 
EnterpriseLegacy <ear, web, ejb> 
Command list-applications executed successfully. 
[email protected]:~$ 

的GlassFish日志部署通过NetBeans:

[2014-10-02T22:04:41.808-0700] [glassfish 4.1] [INFO] [AS-EJB-00054] [javax.enterprise.ejb.container] [tid: _ThreadID=39 _ThreadName=admin-listener(1)] [timeMillis: 1412312681808] [levelValue: 800] [[ 
    Portable JNDI names for EJB MySingletonQueue: [java:global/EnterpriseLegacy/EnterpriseLegacy-ejb/MySingletonQueue!db.RemoteQueue, java:global/EnterpriseLegacy/EnterpriseLegacy-ejb/MySingletonQueue]]] 

[2014-10-02T22:04:41.914-0700] [glassfish 4.1] [WARN] [] [org.jboss.weld.Event] [tid: _ThreadID=39 _ThreadName=admin-listener(1)] [timeMillis: 1412312681914] [levelValue: 900] [[ 
    WELD-000411: Observer method [BackedAnnotatedMethod] org.glassfish.sse.impl.ServerSentEventCdiExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>, BeanManager) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.]] 

[2014-10-02T22:04:41.926-0700] [glassfish 4.1] [WARN] [] [org.jboss.weld.Event] [tid: _ThreadID=39 _ThreadName=admin-listener(1)] [timeMillis: 1412312681926] [levelValue: 900] [[ 
    WELD-000411: Observer method [BackedAnnotatedMethod] public org.glassfish.jms.injection.JMSCDIExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.]] 

[2014-10-02T22:04:41.929-0700] [glassfish 4.1] [WARN] [] [org.jboss.weld.Event] [tid: _ThreadID=39 _ThreadName=admin-listener(1)] [timeMillis: 1412312681929] [levelValue: 900] [[ 
    WELD-000411: Observer method [BackedAnnotatedMethod] public org.glassfish.jms.injection.JMSCDIExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.]] 

[2014-10-02T22:04:41.939-0700] [glassfish 4.1] [WARN] [] [org.jboss.weld.Event] [tid: _ThreadID=39 _ThreadName=admin-listener(1)] [timeMillis: 1412312681939] [levelValue: 900] [[ 
    WELD-000411: Observer method [BackedAnnotatedMethod] private org.glassfish.jersey.gf.cdi.internal.CdiComponentProvider.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.]] 

[2014-10-02T22:04:41.950-0700] [glassfish 4.1] [WARN] [] [org.jboss.weld.Event] [tid: _ThreadID=39 _ThreadName=admin-listener(1)] [timeMillis: 1412312681950] [levelValue: 900] [[ 
    WELD-000411: Observer method [BackedAnnotatedMethod] org.glassfish.sse.impl.ServerSentEventCdiExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>, BeanManager) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.]] 

[2014-10-02T22:04:41.954-0700] [glassfish 4.1] [WARN] [] [org.jboss.weld.Event] [tid: _ThreadID=39 _ThreadName=admin-listener(1)] [timeMillis: 1412312681954] [levelValue: 900] [[ 
    WELD-000411: Observer method [BackedAnnotatedMethod] private org.glassfish.jersey.gf.cdi.internal.CdiComponentProvider.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.]] 

[2014-10-02T22:04:42.523-0700] [glassfish 4.1] [INFO] [jsf.config.listener.version] [javax.enterprise.resource.webcontainer.jsf.config] [tid: _ThreadID=39 _ThreadName=admin-listener(1)] [timeMillis: 1412312682523] [levelValue: 800] [[ 
    Initializing Mojarra 2.2.7 (20140610-1547 https://svn.java.net/svn/mojarra~svn/tags/[email protected]) for context '/EnterpriseLegacy-war']] 

[2014-10-02T22:04:43.199-0700] [glassfish 4.1] [INFO] [AS-WEB-GLUE-00172] [javax.enterprise.web] [tid: _ThreadID=39 _ThreadName=admin-listener(1)] [timeMillis: 1412312683199] [levelValue: 800] [[ 
    Loading application [EnterpriseLegacy#EnterpriseLegacy-war.war] at [EnterpriseLegacy-war]]] 

[2014-10-02T22:04:43.267-0700] [glassfish 4.1] [INFO] [] [javax.enterprise.system.core] [tid: _ThreadID=39 _ThreadName=admin-listener(1)] [timeMillis: 1412312683267] [levelValue: 800] [[ 
    EnterpriseLegacy was successfully deployed in 2,144 milliseconds.]] 

和web模块在从Netbeans部署时按预期运行。我如何手动将EAR部署到Glassfish?

部署从CLI EAR:

[email protected]:~$ 
[email protected]:~$ glassfish-4.1/glassfish/bin/asadmin list-applications 
Nothing to list. 
No applications are deployed to this target server. 
Command list-applications executed successfully. 
[email protected]:~$ 
[email protected]:~$ glassfish-4.1/glassfish/bin/asadmin deploy NetBeansProjects/EnterpriseLegacy/dist/EnterpriseLegacy.ear 
remote failure: Error occurred during deployment: Exception while deploying the app [EnterpriseLegacy] : java.io.IOException: invalid zip file: file:/home/thufir/glassfish-4.1/glassfish/domains/domain1/applications/EnterpriseLegacy/lib/RemoteEJB.jar. Please see server.log for more details. 
Command deploy failed. 
[email protected]:~$ 

glassfish的日志失败手动部署的:

[2014-10-02T21:20:47.809-0700] [glassfish 4.1] [SEVERE] [] [javax.enterprise.system.core] [tid: _ThreadID=40 _ThreadName=admin-listener(3)] [timeMillis: 1412310047809] [levelValue: 1000] [[ 
    Exception while deploying the app [EnterpriseLegacy] : java.io.IOException: invalid zip file: file:/home/thufir/glassfish-4.1/glassfish/domains/domain1/applications/EnterpriseLegacy/lib/RemoteEJB.jar 
java.io.IOException: invalid zip file: file:/home/thufir/glassfish-4.1/glassfish/domains/domain1/applications/EnterpriseLegacy/lib/RemoteEJB.jar 
    at com.sun.enterprise.deployment.deploy.shared.InputJarArchive$ArchiveJarEntrySource.<init>(InputJarArchive.java:582) 
    at com.sun.enterprise.deployment.deploy.shared.InputJarArchive$ArchiveJarEntrySource.<init>(InputJarArchive.java:573) 
    at com.sun.enterprise.deployment.deploy.shared.InputJarArchive.createEntryEnumeration(InputJarArchive.java:451) 
    at com.sun.enterprise.deployment.deploy.shared.InputJarArchive.entries(InputJarArchive.java:203) 
    at com.sun.enterprise.deployment.deploy.shared.InputJarArchive.access$100(InputJarArchive.java:74) 
    at com.sun.enterprise.deployment.deploy.shared.InputJarArchive$1.enumeration(InputJarArchive.java:166) 
    at com.sun.enterprise.deployment.deploy.shared.InputJarArchive$CollectionWrappedEnumeration.<init>(InputJarArchive.java:728) 
    at com.sun.enterprise.deployment.deploy.shared.InputJarArchive.getDirectories(InputJarArchive.java:161) 
    at org.glassfish.javaee.full.deployment.EarDetector.isEARFromIntrospecting(EarDetector.java:142) 
    at org.glassfish.javaee.full.deployment.EarDetector.handles(EarDetector.java:110) 
    at org.glassfish.deployment.common.DeploymentUtils.isArchiveOfType(DeploymentUtils.java:213) 
    at org.glassfish.deployment.common.DeploymentUtils.isArchiveOfType(DeploymentUtils.java:225) 
    at org.glassfish.resources.util.ResourceUtil.hasResourcesXML(ResourceUtil.java:63) 
    at org.glassfish.resources.util.ResourceUtil.hasResourcesXML(ResourceUtil.java:76) 
    at org.glassfish.resources.connector.ResourcesCompositeSniffer.handles(ResourcesCompositeSniffer.java:83) 
    at org.glassfish.internal.deployment.GenericSniffer.handles(GenericSniffer.java:105) 
    at com.sun.enterprise.v3.server.SnifferManagerImpl.getSniffers(SnifferManagerImpl.java:145) 
    at com.sun.enterprise.v3.server.SnifferManagerImpl.getSniffers(SnifferManagerImpl.java:132) 
    at com.sun.enterprise.v3.server.ApplicationLifecycle.getSniffers(ApplicationLifecycle.java:658) 
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:358) 
    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:539) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:535) 
    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:534) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:565) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:557) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:356) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:556) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1464) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:109) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1846) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1722) 
    at org.glassfish.admin.rest.resources.admin.CommandResource.executeCommand(CommandResource.java:404) 
    at org.glassfish.admin.rest.resources.admin.CommandResource.execCommandSimpInMultOut(CommandResource.java:234) 
    at sun.reflect.GeneratedMethodAccessor56.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) 
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:151) 
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:171) 
    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:152) 
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:104) 
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:387) 
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:331) 
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:103) 
    at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:271) 
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) 
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267) 
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:297) 
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:254) 
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1028) 
    at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:365) 
    at org.glassfish.admin.rest.adapter.JerseyContainerCommandService$3.service(JerseyContainerCommandService.java:173) 
    at org.glassfish.admin.rest.adapter.RestAdapter.service(RestAdapter.java:179) 
    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:744) 
]] 

[email protected]:~$ 
[email protected]:~$ 

的EJB实现此远程接口:

包分贝;

import javax.ejb.Remote;

@Remote 公共接口RemoteQueue {

public int getNext(); 

}

EnterpriseLegacy-ejb模块中的EJB:

包分贝;

import javax.ejb。辛格尔顿;

@Singleton 公共类MySingletonQueue实现RemoteQueue {

int i = 3; 

@Override 
public int getNext() { 
    return i; 
} 

}

EnterpriseLegacy与EJB和Web模块结构:

NetBeansProjects/EnterpriseLegacy/ 
├── build.xml 
├── EnterpriseLegacy-ejb 
│ ├── build.xml 
│ ├── nbproject 
│ │ ├── ant-deploy.xml 
│ │ ├── build-impl.xml 
│ │ ├── genfiles.properties 
│ │ ├── private 
│ │ │ ├── private.properties 
│ │ │ └── private.xml 
│ │ ├── project.properties 
│ │ └── project.xml 
│ ├── setup 
│ │ └── glassfish-resources.xml 
│ └── src 
│  ├── conf 
│  │ ├── MANIFEST.MF 
│  │ └── persistence.xml 
│  └── java 
│   └── db 
│    ├── Clients.java 
│    ├── ClientsJpaController.java 
│    ├── exceptions 
│    │ ├── IllegalOrphanException.java 
│    │ ├── NonexistentEntityException.java 
│    │ ├── PreexistingEntityException.java 
│    │ └── RollbackFailureException.java 
│    ├── MySingletonQueue.java 
│    └── Queries.java 
├── EnterpriseLegacy-war 
│ ├── build.xml 
│ ├── nbproject 
│ │ ├── ant-deploy.xml 
│ │ ├── build-impl.xml 
│ │ ├── genfiles.properties 
│ │ ├── private 
│ │ │ ├── private.properties 
│ │ │ └── private.xml 
│ │ ├── project.properties 
│ │ └── project.xml 
│ ├── setup 
│ │ └── sun-resources.xml 
│ ├── src 
│ │ ├── conf 
│ │ │ └── MANIFEST.MF 
│ │ └── java 
│ │  └── dur 
│ │   └── MySessionBean.java 
│ └── web 
│  ├── index.xhtml 
│  ├── menu.xhtml 
│  ├── next.xhtml 
│  ├── template.xhtml 
│  └── WEB-INF 
│   └── web.xml 
├── nbproject 
│ ├── ant-deploy.xml 
│ ├── build-impl.xml 
│ ├── genfiles.properties 
│ ├── private 
│ │ ├── private.properties 
│ │ └── private.xml 
│ ├── project.properties 
│ └── project.xml 
└── src 
    └── conf 
     └── MANIFEST.MF 

注意,当EAR解压缩,包括界面JAR(应该是):

[email protected]:~/NetBeansProjects/EnterpriseLegacy/dist$ 
[email protected]:~/NetBeansProjects/EnterpriseLegacy/dist$ ll lib/ 
total 1280 
drwxrwxr-x 2 thufir thufir 4096 Oct 2 21:35 ./ 
drwxrwxr-x 4 thufir thufir 4096 Oct 2 21:36 ../ 
-rw-rw-r-- 1 thufir thufir 1302203 Oct 2 21:35 javaee-web-api-7.0.jar 
-rw-rw-r-- 1 thufir thufir  0 Oct 2 21:35 RemoteEJB.jar 
[email protected]:~/NetBeansProjects/EnterpriseLegacy/dist$ 

不知怎的,Netbeans在部署中包含RemoteEJB,这是EJB的接口。 Netbeans如何以及在何处将JAR部署到Glassfish?事实上,如果这是错误的根源。

+0

也许有办法在asadmin的deploy命令中包含JAR? https://blogs.oracle.com/alexismp/entry/more_with_deploy_libraries – Thufir 2014-10-03 06:25:15

回答

1

我现在有这个问题,它是由错误的JDBC资源名称造成的。一旦我在persistence.xml中解决这个问题,成功部署.ear。

相关问题