2016-09-10 19 views
0

Websphere 8で非常に単純なSpring Batch Adminアプリケーションを開始しようとしているときに、 "mbeanExporter Invocation failed。UnableToRegisterMBeanException ... InstanceAlreadyExistsException"が発生しました。 https://examples.javacodegeeks.com/enterprise-java/spring/spring-batch-admin-tutorial/からダウンロードしてください。mbeanExporter initメソッドの呼び出しに失敗しましたUnableToRegisterMBeanException ... javax.management.InstanceAlreadyExistsException

これは非常に単純なSpringバッチ管理プロジェクトで、非常に単純なジョブが1つしかありません。私はEclipseでプロジェクトを正常にデバッグすることができ、戦争を構築してWebsphere Liberty Profile 8.5に展開することができます。成功すると、私はSpring Batch管理コンソールを開き、ジョブを適切にトリガーできることを意味します。

以下のエラーは、このような戦争をMainframe Websphere 8.5 NDに移行した場合にのみ表示されます。私はそれがメインフレーム/ UNIXに直接関連しているとは思わない。実際、Pom.xmlとWebsphereで後述するライブラリ間の競合ではないかと思います。どのようなアイデアを確認するかは非常に感謝しています。最近、Hibernate/JPAを使用しているときに特定の問題があり、バージョンを少しダウングレードしてエラーを修正しています。これはちょっと似たようなシナリオです:Websphere Liberty Profileで動作しますが、pom.xmlのhibernateバージョンをダウングレードするまでWebsphere 8.5 NDで動作しませんでした。まあ、今度は休止状態が全くありませんが、私はここに何時か前に入力したものを入力しました。私はそれが図書館の競合であると思っていますが、私は何を調べたり調査したりするのか分かりません。

Spring Bootを使用しても似たようなエラーが発生する人はほとんどいませんでしたが、それは私の場合ではありません。特別Getting exception while refreshing Spring ApplicationContext in Spring Boot applicationに誰かが私の後にもかかわらず

@EnableIntegrationMBeanExport(registration = RegistrationPolicy.REPLACE_EXISTING) 

を追加したとして、私は、このようなプロジェクト内の注釈を持っていないと私は少なくとも明示的EnableIntegrationMBeanExportを使用していないとまったく同じエラーを得ました。多分それはシーンの後ろに使用されているが、私はそれについての専門家ではないので誰かが私に優秀な北であることを確認する可能性を与えることができる場合。さらに、私はSpring MVCを使用していません。

エラーアプリケーションをstartuping

Trace: 2016/09/09 22:49:17.049 02 t=9BDE88 c=UNK key=P8 tag= (13007004) 

    SourceId: com.ibm.ws.webcontainer.webapp.WebApp.logServletError 

    ExtendedMessage: BBOO0220E: SRVE0293E: ÝServlet Error¨-ÝBatch Servlet¨: org.springframework.beans.factory.BeanCreationException: E 

rror creating bean with name 'mbeanExporter': Invocation of init method failed; nested exception is org.springframework.jmx.export.U 

nableToRegisterMBeanException: Unable to register MBean Ýo[email protected]4ed60bcf¨ 

with key 'integrationMBeanExporter'; nested exception is javax.management.InstanceAlreadyExistsException: spring.application:cell=dt 

l85cel,name=integrationMBeanExporter,type=IntegrationMBeanExporter,node=wlemyAppa,process=WLEmyApp 

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.j 

ava:1553) 

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.jav 

a:539) 

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java: 

475) 

at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304) 

at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) 

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300) 

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195) 

at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:70 

3) 

at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:7 

60) 

... 

at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanSe 

at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:814) 

at com.ibm.ws390.management.connector.corba.CorbaConnectorImpl.invoke(CorbaCon 

at com.ibm.ws390.management.connector.corba._CorbaConnectorImplBase._invoke(_C 

at com.ibm.ws390.orb.CommonBridge.invoke(CommonBridge.java:1898) 

at com.ibm.ws390.orb.CommonBridge.getAndProcessWork(CommonBridge.java:725) 

at com.ibm.ws390.orb.CommonBridge.runApplicationThread(CommonBridge.java:614) 

at com.ibm.ws390.management.connector.corba.CorbaConnectorImpl.invoke(CorbaCon 

at com.ibm.ws390.management.connector.corba._CorbaConnectorImplBase._invoke(_C 

at com.ibm.ws390.orb.CommonBridge.invoke(CommonBridge.java:1898) 

at com.ibm.ws390.orb.CommonBridge.getAndProcessWork(CommonBridge.java:725) 

at com.ibm.ws390.orb.CommonBridge.runApplicationThread(CommonBridge.java:614) 

at com.ibm.ws.util.ThreadPool$ZOSWorker.run(ThreadPool.java:2116) 

Caused by: org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean Ýorg.springframework.integration. 

[email protected]¨ with key 'integrationMBeanExporter';nested exception is javax.management.InstanceAlready 

ExistsException: spring.application:cell=mycel,name=integrationMBeanExporter,type=IntegrationMBeanExporter,node=wlemyAppa,process= 

WLEmyApp 

のpom.xml

​​

仕事-config.xmlの

<?xml version="1.0" encoding="UTF-8"?> 

<beans xmlns="http://www.springframework.org/schema/beans" 

     xmlns:batch="http://www.springframework.org/schema/batch" xmlns:util="http://www.springframework.org/schema/util" 

     xmlns:task="http://www.springframework.org/schema/task" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

     xsi:schemaLocation="http://www.springframework.org/schema/batch 

     http://www.springframework.org/schema/batch/spring-batch-3.0.xsd 

     http://www.springframework.org/schema/beans 

     http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 

     http://www.springframework.org/schema/util 

     http://www.springframework.org/schema/util/spring-util-4.0.xsd"> 





     <bean 

       class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 

       <property name="locations"> 

        <list> 

          <value>classpath:batch-default.properties 

          </value> 

        </list> 

       </property> 

       <property name="searchSystemEnvironment" value="true" /> 

       <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" /> 

       <property name="ignoreUnresolvablePlaceholders" value="true" /> 

     </bean> 





     <job id="myjob" xmlns="http://www.springframework.org/schema/batch" 

       restartable="true"> 

       <step id="myStep" allow-start-if-complete="true"> 

        <tasklet> 

          <chunk reader="cvsFileItemReader" writer="itemWriter" 

            commit-interval="1000" /> 

        </tasklet> 

       </step> 

     </job> 



     <bean id="cvsFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader"> 

       <!-- property name="resource" value="${INPUT_FILE_LOCATION}"></property--> 

       <property name="resource" value="file:/C:/temp/sampleData.csv"></property> 

       <property name="linesToSkip" value="1"></property> 

       <property name="lineMapper"> 

        <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper"> 

          <property name="lineTokenizer"> 

            <bean 

             class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer"> 

             <!-- <property name="names" value="${INCOMING_COLUMN_MAPPING}"></property> --> 

             <property name="names" value="firstName,lastName,city,id"></property> 



            </bean> 

          </property> 

          <property name="fieldSetMapper"> 

            <bean 

             class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper"> 

             <property name="prototypeBeanName" value="userModel"></property> 

            </bean> 

          </property> 

        </bean> 

       </property> 



     </bean> 





     <bean id="itemWriter" 

       class="org.springframework.batch.item.database.JdbcBatchItemWriter"> 

       <property name="dataSource" ref="dataSource"></property> 

       <property name="sql" value="${INSERT_QUERY}"> 

       </property> 

       <property name="itemSqlParameterSourceProvider"> 

        <bean 

          class="org.springframework.batch.item.database.BeanPropertyItemSqlParameterSourceProvider" /> 

       </property> 

     </bean> 



     <bean id="userModel" class="com.javacodegeeks.example.util.UserModel" 

       scope="prototype" /> 





</beans> 

コンテックス-config.xmlの

<beans xmlns="http://www.springframework.org/schema/beans" 

     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

     xmlns:jdbc="http://www.springframework.org/schema/jdbc"  

     xsi:schemaLocation=" 

       http://www.springframework.org/schema/beans 

       http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 

       http://www.springframework.org/schema/jdbc 

      http://www.springframework.org/schema/jdbc/spring-jdbc.xsd"> 



     <!-- using in-memory store for batch meta-data --> 

     <bean id="jobRepository" 

       class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean"> 

       <property name="dataSource" ref="dataSource" /> 

       <property name="transactionManager" ref="transactionManager" /> 

       <property name="databaseType" value="hsql" /> 

     </bean> 



     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 

       <property name="dataSource" ref="dataSource"></property>  

     </bean> 



     <bean id="jobLauncher" 

       class="org.springframework.batch.core.launch.support.SimpleJobLauncher"> 

       <property name="jobRepository" ref="jobRepository" /> 

     </bean> 



     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 

       lazy-init="true" destroy-method="close"> 

       <property name="driverClassName" value="org.hsqldb.jdbcDriver" /> 

       <property name="url" 

        value="jdbc:hsqldb:file:src/main/resources/hsqldb/batchcore.db;shutdown=true;" />  

       <property name="username" value="sa" /> 

       <property name="password" value="" /> 

     </bean> 


</beans> 

Project Tree

****は、編集:

を私はWeblogicの2つの春の一括管理、実行を作成する方法について説明しDeploying two Spring batch applications in same cluster in a single Weblogic Domain?を読んでいます。 私はその人がまったく同じ問題に直面しているのを見ることができます。その後、私は別のSpring Batch Adminを作成し、ローカルのWebsphere Libertyプロファイルにデプロイしました。その後、私はメインフレームでピックアップしていたのとまったく同じエラーが発生しました。

私は最終的に問題と解決策を見つけたと思ったので、まずそれは幸せでした。

ローカルWebsphereで、/ META-INF/spring/batch/override/jmx-contextを追加して修正しました。私は、メインフレームで実行されているのWebsphere 8.5 NDに同じアプローチを試してみました刚性素晴らしいニュースだった

<?xml version="1.0" encoding="UTF-8"?> 

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xmlns:int-jmx="http://www.springframework.org/schema/integration/jmx" xmlns:context="http://www.springframework.org/schema/context" 

xsi:schemaLocation="http://www.springframework.org/schema/integration/jmx http://www.springframework.org/schema/integration/jmx/spring-integration-jmx.xsd 

    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 

    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> 



    <int-jmx:mbean-export id="integrationMBeanExporter" default-domain="SpringBatchAdmin" server="mbeanServer" /> 

    <context:mbean-export default-domain="SpringBatchAdmin" server="mbeanServer" /> 

</beans> 

まあ:でXML。まったく同じ問題が残っています。私は少なくとも私が試みることができる他の何かを探しています。

+0

スタックトレース内の 'InstanceAlreadyExistsException'があります。 Mainframe WAS上で実行されている別のアプリケーションもSpringフレームワーク上に構築されているかどうかを確認できますか? – Haxiel

+0

はい、私は、複数のSpring Webアプリケーションがあると確信しています。おそらく別のSpring Batch Adminもあります。さて、どうすれば修正できますか? –

+1

更新プログラムによれば、問題はWAS for z/OSに固有のものになりました。 IBM docs [here](http://www.ibm.com/support/knowledgecenter/en/SS7K4U_8.5.5/com.ibm.websphere.nd.multiplatform.doc/ae/cspr_data_access_tran2.html)を参照してください。それが役立つかどうかを確認してください。 :-) – Haxiel

答えて

0

も同じ問題がありました。

私は、バネ統合が使用されたのと同じマシンに仮想ホスティングを行っています。テストシステムを配備したら、すべてOKでした。しばらくすると、私はprodシステムを展開し、すべてが間違っていました。

IはApplication.classで次のように指定:

@EnableIntegrationMBeanExport(defaultdomainに= "$ {managed.domain}")

とapplication.propertiesに私はmanaged.domain名を定義したファイル。

私がここで見つけた解決策:

Tutorial

関連する問題