java.util.zip.ZipException в развертывании приложения Glassfish (v3) - PullRequest
2 голосов
/ 15 мая 2010

У меня есть странное исключение с моим приложением EJB3.1, при развертывании приложения выдается ZipException:

[#|2010-05-15T16:01:44.688+0100|SEVERE|glassfish3.0.1|javax.enterprise.system.container.web.org.glassfish.web.loader|_ThreadID=22;_ThreadName=Thread-1;|WEB9051: Error trying to scan the classes at /Users/kevin/Documents/netbeans/WebAlbums/trunk/WebAlbums3/WebAlbums3-ea/dist/gfdeploy/WebAlbums3-Service.jar for annotations in which a ServletContainerInitializer has expressed interest
java.util.zip.ZipException: error in opening zip file
    at java.util.zip.ZipFile.open(Native Method)
    at java.util.zip.ZipFile.<init>(ZipFile.java:114)
    at java.util.jar.JarFile.<init>(JarFile.java:133)
    at java.util.jar.JarFile.<init>(JarFile.java:70)
    at org.glassfish.web.loader.ServletContainerInitializerUtil.getInitializerList(ServletContainerInitializerUtil.java:255)
    at org.apache.catalina.core.StandardContext.callServletContainerInitializers(StandardContext.java:5331)
    at com.sun.enterprise.web.WebModule.callServletContainerInitializers(WebModule.java:550)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:5263)
    at com.sun.enterprise.web.WebModule.start(WebModule.java:499)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:928)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:912)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:694)
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1947)
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1619)
    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:90)
    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:126)
    at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:241)
    at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:236)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:339)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:183)
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:272)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:305)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:320)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1176)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.java:83)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1224)
    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:365)
    at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:204)
    at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:166)
    at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:245)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
    at java.lang.Thread.run(Thread.java:637)
|#]

Я действительно не знаю, как расследовать эту ошибку; Я знаю, что это не связано с установкой Glassfish (та же проблема на Ubuntu и Mac).


EDIT: (детали пути к классу кажутся бесполезными)

проблема с ... / WebAlbums3-ea / dist / gfdeploy / WebAlbums3-Service.jar состоит в том, что этот файл фактически отсутствует там, где его ищет Glassfish ... Вместо этого у меня есть папка с именем WebAlbums3-Service_jar


(я использую Netbeans 6.8, Glassfish v3, Servlet3, EJB 3.1, JPA / Hibernate)

Спасибо за вашу помощь

EDIT: Проблема (как ZipException, так и уже загруженных EJB) была решена путем извлечения интерфейсов EJB за пределами того места, где была определена реализация (классы реализации были загружены с каждым из модулей, следовательно, EJB исключение)

Ответы [ 4 ]

1 голос
/ 15 мая 2010

Я видел несколько упоминаний об этой проблеме в сети, как эта , в которой упоминается, что она не блокирует:

Если после развертывания EAR появляется следующая ошибка, не беспокойтесь, это вполне нормально: «WEB9051: Ошибка при попытке сканирования классов в ... / eclipseApps / Seven / SevenEJB.jar для аннотаций, в которых ServletContainerInitializer выразил заинтересованность ". Смотри здесь.

А также в Выпуск 11149 или Выпуск 11341 . Ваш случай кажется другим, но если это не так (если у вас есть jar с '+' в имени файла), это должно быть исправлено в GF v3.0.1.

Если это не относится к вам, я предлагаю создать проблему . Даже если нет блокировки, это явно не нормально.

1 голос
/ 15 мая 2010

Ошибка при попытке сканировать классы в /Users/kevin/Documents/netbeans/WebAlbums/trunk/WebAlbums3/WebAlbums3-ea/dist/gfdeploy/WebAlbums3-Service.jar на наличие аннотаций, в которых выражена заинтересованность * ServletContainerInitizer ServletContainerInjizer

java.util.zip.ZipException: error in opening zip file

Похоже, файл JAR поврежден. Перекомпилируйте / замените его. Если вы используете FTP во время развертывания, позаботьтесь о том, чтобы отправлять двоичные файлы в виде двоичных данных, а не в виде текстовых данных.

Это также может быть вызвано тем, что временное хранилище переполнено или недоступно для записи.

Обновление : Google узнает, что это также может быть связано с JDK. Попробуйте обновить JDK до последней версии.

0 голосов
/ 06 января 2011

Наличие «_» вместо «.» нормально, когда вы используете разнесенное развертывание (именно так предполагается разнесенный артефакт)

Это может быть "нормально", но GF ищет файл myEJB.jar, которого там нет. Есть только взорванный артефакт, который затем не будет развернут.

Проблема (как с ZipException, так и с уже загруженными EJB) была решена путем извлечения интерфейсов EJB за пределами того места, где была определена реализация (классы реализации были загружены с каждым из модулей, отсюда исключение EJB)

Не уверен, что понимаю, как это излечивает вышеуказанную проблему. Мой класс реализации представляет собой отдельный бин сообщения.

0 голосов
/ 15 мая 2010

Можете ли вы открыть zip-файл с помощью winzip или 7zip? Можете ли вы открыть файл программно, используя ZipFile? Я уверен, что один из этих вопросов оценит как ложный.

Некоторое время назад у меня были странные ошибки zip, связанные со специальными символами в именах содержимого файла (где специальные средства, не-ASCII символы).

...