Websphere 8에서 매우 간단한 Spring Batch Admin 응용 프로그램을 시작하려고 시도하는 중에 "mbeanExporter Invocation failed. UnableToRegisterMBeanException ... InstanceAlreadyExistsException"오류가 발생합니다. https://examples.javacodegeeks.com/enterprise-java/spring/spring-batch-admin-tutorial/에서 다운로드 할 수 있습니다.mbeanExporter init 메소드의 호출이 실패했습니다. UnableToRegisterMBeanException ...
매우 간단한 간단한 일괄 처리 관리자 프로젝트입니다. 이클립스에서 프로젝트를 성공적으로 디버깅 할 수 있고 전쟁을 구축하고 Websphere Liberty Profile 8.5에 배포 할 수 있습니다. 성공함으로써 Spring Batch 관리 콘솔을 열고 작업을 올바르게 시작할 수 있음을 의미합니다.
아래의 오류는 그러한 전쟁을 Mainframe Websphere 8.5 ND로 옮길 때만 나타납니다. 나는 그것이 메인 프레임/유닉스와 직접적인 관련이 있다고 생각하지 않는다. 사실, 필자는 Pom.xml과 Websphere에서 설명하는 라이브러리 사이의 충돌이 아닌지 궁금합니다. 어떤 아이디어를 확인해야할지 매우 감사하게 생각할 것입니다. 최근에 나는 Hibernate/JPA를 사용할 때 특정 이슈를 가지고 있으며, 단순히 버전을 다운 그레이드함으로써 버전을 수정했다. 그것은 조금 비슷한 시나리오입니다 : Websphere Liberty Profile에서 작동하지만 pom.xml에서 최대 절전 모드 버전을 다운 그레이드 할 때까지 Websphere 8.5 ND에서 작동하지 않았습니다. 글쎄, 이번에는 최대 절전 모드가 전혀 없지만 언젠가는 고정 된 것을 여기에 입력했는데 누군가가 나에게 무엇을 확인해야 할지를 알려줄 수 있습니다. 도서관 갈등이라는 생각이 들지만 확인하거나 조사해야 할 대상을 모른다.
스프링 부트를 사용하여 비슷한 오류가 발생하는 사람은 거의 없습니다.하지만 제 경우는 그렇지 않습니다. 나를 후 그럼에도 불구하고, 나는 그런 프로젝트의 모든 말뭉치 주석이없는 나는 적어도 명시 적으로 EnableIntegrationMBeanExport를 사용하고 있지 않다
@EnableIntegrationMBeanExport(registration = RegistrationPolicy.REPLACE_EXISTING)
을 추가로 특별
Getting exception while refreshing Spring ApplicationContext in Spring Boot application 사람이 정확히 같은 오류가 발생했습니다. 어쩌면 그 장면 뒤에 사용되었지만 나는 그 전문가가 아니기 때문에 다른 사람이 나에게 가능성을 줄 수 있다면 그것이 훌륭한 북쪽이 될지 확인할 것입니다. 또한 Spring MVC를 사용하지 않습니다.
오류 응용 프로그램
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.
monitor.IntegrationM[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
<spring.version>4.0.5.RELEASE</spring.version>
<spring.batch.version>3.0.4.RELEASE</spring.batch.version>
<spring.jdbc.version>4.0.5.RELEASE</spring.jdbc.version>
<hsql.version>1.8.0.7</hsql.version>
<commons.version>1.4</commons.version>
<spring.oxm.version>4.0.5.RELEASE</spring.oxm.version>
<spring.batch.admin>1.3.1.RELEASE</spring.batch.admin>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.batch</groupId>
<artifactId>spring-batch-core</artifactId>
<version>${spring.batch.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>${hsql.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.jdbc.version}</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>${commons.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${spring.oxm.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.batch</groupId>
<artifactId>spring-batch-admin-manager</artifactId>
<version>${spring.batch.admin}</version>
<exclusions>
<exclusion>
<groupId>org.springframework.batch</groupId>
<artifactId>spring-context-support</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.batch</groupId>
<artifactId>spring-batch-admin-resources</artifactId>
<version>${spring.batch.admin}</version>
<exclusions>
<exclusion>
<groupId>org.springframework.batch</groupId>
<artifactId>spring-context-support</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<finalName>SpringBatchAdmin</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
작업-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에
,691,363을 startuping 때 (210)<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>
은 편집 **** : 나는 Deploying two Spring batch applications in same cluster in a single Weblogic Domain?을 읽고있다
웹 로직에 두 개의 스프링 배치 관리자 실행할 수 있도록하는 방법을 설명한다. 그 사람이 똑같은 문제에 직면하고 있음을 알 수 있습니다. 그런 다음 다른 Spring Batch Admin을 만들고 내 로컬 Websphere Liberty 프로파일에 배포 한 다음 메인 프레임에서 픽업 한 것과 동일한 오류가 발생했습니다.
처음에는 문제와 해결책을 찾았다 고 생각하기 때문에 행복했습니다.
로컬 웹 스피어에서/META-INF/spring/batch/override/jmx-context를 추가하여 수정했습니다.xml과 함께 :
메인 프레임에서 실행되는 Websphere 8.5 ND에서 동일한 접근법을 시도 할 때까지 좋은 소식이었습니다. 정확히 같은 문제가 거기에 남아 있습니다. 제발, 적어도 제가 시도 할 수있는 다른 것을 찾고 있습니다.
는 스택 추적에'InstanceAlreadyExistsException' 있습니다. Mainframe WAS에서 실행중인 다른 응용 프로그램이 Spring 프레임 워크에서 빌드되었는지 확인할 수 있습니까? – Haxiel
예, 나는 하나 이상의 Spring 웹 애플리케이션이 있고 다른 Spring Batch Admin도 있다고 확신합니다. 글쎄, 어떻게 고칠 수 있니? –
갱신 사항에 따르면 이제 문제점은 z/OS 용 WAS에만 적용됩니다. 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