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>
****は、編集:
を私は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。まったく同じ問題が残っています。私は少なくとも私が試みることができる他の何かを探しています。
スタックトレース内の 'InstanceAlreadyExistsException'があります。 Mainframe WAS上で実行されている別のアプリケーションもSpringフレームワーク上に構築されているかどうかを確認できますか? – Haxiel
はい、私は、複数のSpring Webアプリケーションがあると確信しています。おそらく別のSpring Batch Adminもあります。さて、どうすれば修正できますか? –
更新プログラムによれば、問題は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