2010-05-15 1 views
2

У меня странное исключение с моей EJB3.1 заявки, ZipException брошено во время развертывания приложения:java.util.zip.ZipException в развертывании Glassfish (v3) приложения

[#|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-еа/расстояние/gfdeploy/WebAlbums3-Service.jar является то, что этот файл на самом деле не представляют, где Glassfish ищет его ... Вместо этого я получил папку с именем WebAlbums3-Service_jar


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

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

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

+0

Для чего это стоит, я получаю подобное исключение, время от времени развертывая под SpringSource dm Server. Это происходит всегда или просто иногда? –

+0

нет, это действительно для всех моих развертываний. – Kevin

+0

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

ответ

1

Я видел несколько упоминаний об этой проблеме в Интернете, как this one, который упоминает его как неблокирующем:

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

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

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

+0

В именах баннеров нет +, так что это действительно так, и в моем случае это не блокирует. Я поднял issue 11911. Спасибо! – Kevin

+0

hum, как я должен развернуть вручную мой ea-проект? когда я развертываю EAR, у меня есть исключение (2 ejbs с одним и тем же интерфейсом - не верно, я имею в виду, что это проблема с упаковкой), тогда как развертывание Netbeans? path = .../WebAlbums3-ea/dist/gfdeploy в порядке (Я хотел присоединиться к этому EAR с сообщением о проблеме) – Kevin

+0

@ Kevin Самый простой способ - скопировать его в каталог 'autodeploy' вашего домена. –

1

Ошибка пытается сканировать классы в/Пользователи/Kevin/Документы/NetBeans/WebAlbums/багажник/WebAlbums3 /WebAlbums3-ea/dist/gfdeploy/WebAlbums3-Service.jar для аннотаций, в которых ServletContaine rInitializer выразил заинтересованность

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

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

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

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

+0

, если вы говорите о WebAlbums3-Service.jar, это не может быть, это главная банку моего приложения, он перекомпилируется каждый день, а не передается (netbeans/glassfish на том же компьютере); не проблема с пространством ... – Kevin

+0

Для чего это стоит, когда у меня была аналогичная проблема с SpringServer, банка не была повреждена. Повторное развертывание обычно будет работать. –

+0

У меня есть обновленные JDK, OpenJDK 1.0_18 на Ubuntu, HotSpot 1.6.0_17 на Mac – Kevin

0

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

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

+0

Это не zip-файл на самом деле, OP использует разнесенное развертывание. –

0

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

Это может быть «нормальным», но GF ищет файл myEJB.jar, что не там. Есть только взорванный артефакт, который затем не развертывается.

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

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

+1

Я чувствую, что извлечение интерфейсов решило проблему, потому что первая реализация не соответствовала «рекомендациям», следовательно, неожиданному поведению, но, возможно, это было просто совпадение! – Kevin