Русский English Тэги View Sergey Zolotaryov's profile on LinkedIn Вход
Странная ошибка в Weblogic 10
Постоянная ссылка 19-09-2007 anydoby java

Жил был бин. Жил бы себе и дальше, да вот беда - нужно было в нем добавить пару строчек. Добавил, скомпилил, а Weblogic не ест. Печатает от такое:


####<Sep 19, 2007 10:54:32 AM EEST> <Warning> <Deployer> <Szolotaryov> <tpadminServer> <[ACTIVE] ExecuteThread: '0' for queue: 
'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1190188472905> <BEA-149078> <Stack trace for message 149004
weblogic.application.ModuleException: Exception preparing module: EJBModule(tpadmin.comp.TPMonitorCore.jar)
[EJB:011023]An error occurred while reading the deployment descriptor. 
The error was:
 : java.lang.NullPointerException.
	at weblogic.ejb.container.deployer.EJBModule.prepare(EJBModule.java:399)
	at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:93)
	at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:360)
	at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
	at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:56)
	at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:46)
	at weblogic.application.internal.BaseDeployment$1.next(BaseDeployment.java:615)
	at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
	at weblogic.application.internal.BaseDeployment.prepare(BaseDeployment.java:191)
	at weblogic.application.internal.DeploymentStateChecker.prepare(DeploymentStateChecker.java:147)
	at weblogic.deploy.internal.targetserver.AppContainerInvoker.prepare(AppContainerInvoker.java:61)
	at weblogic.deploy.internal.targetserver.operations.ActivateOperation.createAndPrepareContainer(ActivateOperation.java:189)
	at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doPrepare(ActivateOperation.java:87)
	at weblogic.deploy.internal.targetserver.operations.AbstractOperation.prepare(AbstractOperation.java:217)
	at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentPrepare(DeploymentManager.java:719)
	at weblogic.deploy.internal.targetserver.DeploymentManager.prepareDeploymentList(DeploymentManager.java:1186)
	at weblogic.deploy.internal.targetserver.DeploymentManager.handlePrepare(DeploymentManager.java:248)
	at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.prepare(DeploymentServiceDispatcher.java:157)
	at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doPrepareCallback(DeploymentReceiverCallbackDeliverer.java:157)
	at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$000(DeploymentReceiverCallbackDeliverer.java:12)
	at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$1.run(DeploymentReceiverCallbackDeliverer.java:45)
	at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:464)
	at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200)
	at weblogic.work.ExecuteThread.run(ExecuteThread.java:172)
java.io.IOException: : java.lang.NullPointerException
	at weblogic.ejb.container.dd.xml.EjbDescriptorReaderImpl.processStandardAnnotations(EjbDescriptorReaderImpl.java:324)
	at weblogic.ejb.container.dd.xml.EjbDescriptorReaderImpl.createReadOnlyDescriptorFromJarFile(EjbDescriptorReaderImpl.java:186)
	at weblogic.ejb.spi.EjbDescriptorFactory.createReadOnlyDescriptorFromJarFile(EjbDescriptorFactory.java:93)
	at weblogic.ejb.container.deployer.EJBModule.loadEJBDescriptor(EJBModule.java:965)
	at weblogic.ejb.container.deployer.EJBModule.prepare(EJBModule.java:335)
	at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:93)
	at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:360)
	at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
	at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:56)
	at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:46)
	at weblogic.application.internal.BaseDeployment$1.next(BaseDeployment.java:615)
	at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
	at weblogic.application.internal.BaseDeployment.prepare(BaseDeployment.java:191)
	at weblogic.application.internal.DeploymentStateChecker.prepare(DeploymentStateChecker.java:147)
	at weblogic.deploy.internal.targetserver.AppContainerInvoker.prepare(AppContainerInvoker.java:61)
	at weblogic.deploy.internal.targetserver.operations.ActivateOperation.createAndPrepareContainer(ActivateOperation.java:189)
	at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doPrepare(ActivateOperation.java:87)
	at weblogic.deploy.internal.targetserver.operations.AbstractOperation.prepare(AbstractOperation.java:217)
	at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentPrepare(DeploymentManager.java:719)
	at weblogic.deploy.internal.targetserver.DeploymentManager.prepareDeploymentList(DeploymentManager.java:1186)
	at weblogic.deploy.internal.targetserver.DeploymentManager.handlePrepare(DeploymentManager.java:248)
	at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.prepare(DeploymentServiceDispatcher.java:157)
	at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doPrepareCallback(DeploymentReceiverCallbackDeliverer.java:157)
	at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$000(DeploymentReceiverCallbackDeliverer.java:12)
	at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$1.run(DeploymentReceiverCallbackDeliverer.java:45)
	at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:464)
	at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200)
	at weblogic.work.ExecuteThread.run(ExecuteThread.java:172)

Ничего не понятно, правда? И мне непонятно. Пошел поспрашивал, оказывается у парней тоже такая бяка была. В Google про эту ошибку пару ссылок - и одни вопросы. Короче, начал копать. Нужно учесть, что вебложик зверюга тяжелая - и каждый эксперимент, требующий деплоймента, занимает по 3-5 минут.

Попробовал поудалять аннотации, думал, может компилеру веблоджика это не нравится. Тоже нифига. Вынес новые строки кода в отдельный статический метод в другом классе - не EBJ. Получил еще одну пощечину:


####<Sep 19, 2007 11:50:25 AM EEST> <Warning> <Deployer> <Szolotaryov> <tpadminServer> <[ACTIVE] ExecuteThread: '3' for queue: 
'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1190191825249> <BEA-149004> <Failures were detected while initiating deploy task for application '_appsdir_tpadmin.app.TPAdmin_ear'.> 
####<Sep 19, 2007 11:50:25 AM EEST> <Warning> <Deployer> <Szolotaryov> <tpadminServer> <[ACTIVE] ExecuteThread: '3' for queue: 
'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1190191825249> <BEA-149078> <Stack trace for message 149004
weblogic.application.ModuleException: Exception preparing module: EJBModule(tpadmin.comp.TPMonitorCore.jar)

	at weblogic.ejb.container.deployer.EJBModule.prepare(EJBModule.java:399)
	at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:93)
	at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:360)
	at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
	at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:56)
	at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:46)
	at weblogic.application.internal.BaseDeployment$1.next(BaseDeployment.java:615)
	at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
	at weblogic.application.internal.BaseDeployment.prepare(BaseDeployment.java:191)
	at weblogic.application.internal.DeploymentStateChecker.prepare(DeploymentStateChecker.java:147)
	at weblogic.deploy.internal.targetserver.AppContainerInvoker.prepare(AppContainerInvoker.java:61)
	at weblogic.deploy.internal.targetserver.operations.ActivateOperation.createAndPrepareContainer(ActivateOperation.java:189)
	at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doPrepare(ActivateOperation.java:87)
	at weblogic.deploy.internal.targetserver.operations.AbstractOperation.prepare(AbstractOperation.java:217)
	at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentPrepare(DeploymentManager.java:719)
	at weblogic.deploy.internal.targetserver.DeploymentManager.prepareDeploymentList(DeploymentManager.java:1186)
	at weblogic.deploy.internal.targetserver.DeploymentManager.handlePrepare(DeploymentManager.java:248)
	at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.prepare(DeploymentServiceDispatcher.java:157)
	at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doPrepareCallback(DeploymentReceiverCallbackDeliverer.java:157)
	at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$000(DeploymentReceiverCallbackDeliverer.java:12)
	at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$1.run(DeploymentReceiverCallbackDeliverer.java:45)
	at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:464)
	at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200)
	at weblogic.work.ExecuteThread.run(ExecuteThread.java:172)
java.lang.StringIndexOutOfBoundsException: String index out of range: 51968
	at java.lang.String.checkBounds(String.java:372)
	at java.lang.String.<init>(String.java:404)
	at serp.bytecode.lowlevel.ConstantPoolTable.readString(ConstantPoolTable.java:112)
	at serp.bytecode.lowlevel.ConstantPoolTable.readString(ConstantPoolTable.java:174)
	at org.apache.openjpa.lib.meta.ClassAnnotationMetaDataFilter.matches(ClassAnnotationMetaDataFilter.java:80)
	at org.apache.openjpa.lib.meta.ZipFileMetaDataIterator.hasNext(ZipFileMetaDataIterator.java:76)
	at org.apache.openjpa.lib.meta.ClassArgParser.mapTypeNames(ClassArgParser.java:274)
	at org.apache.openjpa.meta.AbstractCFMetaDataFactory.scan(AbstractCFMetaDataFactory.java:710)
	at org.apache.openjpa.meta.AbstractCFMetaDataFactory.parsePersistentTypeNames(AbstractCFMetaDataFactory.java:614)
	at org.apache.openjpa.meta.AbstractCFMetaDataFactory.getPersistentTypeNames(AbstractCFMetaDataFactory.java:578)
	at org.apache.openjpa.meta.MetaDataRepository.getPersistentTypeNames(MetaDataRepository.java:1187)
	at org.apache.openjpa.enhance.PCClassFileTransformer.<init>(PCClassFileTransformer.java:98)
	at org.apache.openjpa.enhance.PCClassFileTransformer.<init>(PCClassFileTransformer.java:62)
	at org.apache.openjpa.persistence.PersistenceProviderImpl$ClassTransformerImpl.<init>(PersistenceProviderImpl.java:143)
	at org.apache.openjpa.persistence.PersistenceProviderImpl$ClassTransformerImpl.<init>(PersistenceProviderImpl.java:116)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createContainerEntityManagerFactory(PersistenceProviderImpl.java:93)
	at weblogic.deployment.PersistenceUnitInfoImpl.createEntityManagerFactory(PersistenceUnitInfoImpl.java:264)
	at weblogic.deployment.PersistenceUnitInfoImpl.<init>(PersistenceUnitInfoImpl.java:110)
	at weblogic.deployment.AbstractPersistenceUnitRegistry.storeDescriptors(AbstractPersistenceUnitRegistry.java:316)
	at weblogic.deployment.AbstractPersistenceUnitRegistry.loadPersistenceDescriptor(AbstractPersistenceUnitRegistry.java:230)
	at weblogic.deployment.ModulePersistenceUnitRegistry.<init>(ModulePersistenceUnitRegistry.java:58)
	at weblogic.ejb.container.deployer.EJBModule.setupPersistenceUnitRegistry(EJBModule.java:185)
	at weblogic.ejb.container.deployer.EJBModule.prepare(EJBModule.java:331)
	at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:93)
	at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:360)
	at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
	at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:56)
	at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:46)
	at weblogic.application.internal.BaseDeployment$1.next(BaseDeployment.java:615)
	at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
	at weblogic.application.internal.BaseDeployment.prepare(BaseDeployment.java:191)
	at weblogic.application.internal.DeploymentStateChecker.prepare(DeploymentStateChecker.java:147)
	at weblogic.deploy.internal.targetserver.AppContainerInvoker.prepare(AppContainerInvoker.java:61)
	at weblogic.deploy.internal.targetserver.operations.ActivateOperation.createAndPrepareContainer(ActivateOperation.java:189)
	at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doPrepare(ActivateOperation.java:87)
	at weblogic.deploy.internal.targetserver.operations.AbstractOperation.prepare(AbstractOperation.java:217)
	at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentPrepare(DeploymentManager.java:719)
	at weblogic.deploy.internal.targetserver.DeploymentManager.prepareDeploymentList(DeploymentManager.java:1186)
	at weblogic.deploy.internal.targetserver.DeploymentManager.handlePrepare(DeploymentManager.java:248)
	at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.prepare(DeploymentServiceDispatcher.java:157)
	at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doPrepareCallback(DeploymentReceiverCallbackDeliverer.java:157)
	at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$000(DeploymentReceiverCallbackDeliverer.java:12)
	at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$1.run(DeploymentReceiverCallbackDeliverer.java:45)
	at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:464)
	at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200)
	at weblogic.work.ExecuteThread.run(ExecuteThread.java:172)

Так что статический метод отставили. Решил действовать методом научного полутыка - добавлять в класс по одной строчке кода и искать, где повалится. Оказалось, что вызывать методы низзя вообще. Зато создавать новые объекты - пожалуйста. Отсюда было найдено некрасивое решение - код, который нужно было добавить, засунул в конструктор нового класса, и там, где надо было использовать этот код, вызывал просто конструктор через new. Да. Еще одно важное замечание - нужно убрать все аннотации над методами бина.

Может, пожаловаться в суппорт BEA?

Добавить комментарий

anydoby
08-10-2007

Как оказалось, после того, как я пошел в отпуск на две недели, ребята из нашей команды за 4 дня нашли, как можно обойти эту проблему - можно переупаковать jar файл, используя максимальную степень компрессии 7-zip. Или можно скомпилировать проблемный класс без дебажной информации. BEA признала баг и посоветовала прописать явно класс бина в маппингах JNDI.

Предыдущая статья Как итерировать по массиву примитивов в SQL запросе к iBATIS Следующая статья Ошибка при старте Tomcat с APR