2017-05-05 1 views
1

영속성 단위를 사용하여 낙타 경로에서 JPA 구성 요소를 구성하려고합니다.낙타 경로가 시작될 때 JNDI에서 지속성 단위를 사용할 수 없음

EAP 6.4 및 Fuse 6.3을 사용하고 있습니다.

오른쪽 이제 경로는 그냥 내 데이터 소스에 대해 작업 얻을 정말 기본입니다 :

private UserTransaction userTransaction; 
private JpaEndpoint jpaEndpoint; 
private JaxbDataFormat jaxbDataFormat; 

@Override 
public void configure() throws Exception { 
    // @formatter:off 
    configureErrorHandling(); 

    configureJpa(); 

    from("timer:startup?repeatCount=1") 
    .to(jpaEndpoint) 
    .process(exchange -> { 
     Exchange ex = exchange; 
    }); 

    // @formatter:on 
} 

private void configureJpa() { 
    // Configure our JaxbDataFormat to point at our 'model' package 
    EntityManagerFactory entityManagerFactory = null; 
    try { 
     userTransaction = InitialContext.doLookup("java:jboss/UserTransaction"); 
     entityManagerFactory = InitialContext.doLookup("java:/UtskicksbegaranOraclePU"); 
    } catch (NamingException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    jaxbDataFormat = new JaxbDataFormat(); 
    jaxbDataFormat.setContextPath(UtskicksbegaranRequestOracle.class.getPackage().getName()); 

    // Configure a JtaTransactionManager by looking up the JBoss transaction manager from JNDI 

    JtaTransactionManager transactionManager = new JtaTransactionManager(userTransaction); 
    transactionManager.afterPropertiesSet(); 

    // Configure the JPA endpoint to use the correct EntityManagerFactory and JtaTransactionManager 
    jpaEndpoint = new JpaEndpoint(); 
    jpaEndpoint.setCamelContext(getContext()); 
    jpaEndpoint.setConsumeDelete(false); 
    jpaEndpoint.setMaximumResults(500); 
    jpaEndpoint.setQuery(consumerQuery); 
    jpaEndpoint.setEntityType(UtskicksbegaranRequestOracle.class); 
    jpaEndpoint.setEntityManagerFactory(entityManagerFactory); 
    jpaEndpoint.setTransactionManager(transactionManager); 
} 

여기서 문제는 내 서버에서이 줄을이 시작할 때이다 : entityManagerFactory = InitialContext.doLookup("java:/UtskicksbegaranOraclePU");가 발생 javax.naming.NameNotFoundException: UtskicksbegaranOraclePU -- service jboss.naming.context.java.UtskicksbegaranOraclePU

위의 코드는 대부분 Jboss와 함께 제공되는 빠른 시작에서 가져온 것입니다.

내 경로에서 JPA 구성 요소를 사용하거나 구성하지 않고 서버를 시작하면 서버에 액세스하여 내 지속성 장치가 JNDI에 등록되어 있는지 확인할 수 있습니다.

<persistence version="2.0" 
    xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation=" 
     http://java.sun.com/xml/ns/persistence 
     http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 

    <persistence-unit name="UtskicksbegaranOraclePU" transaction-type="JTA"> 
     <jta-data-source>java:jboss/datasources/xa/utskicksbegaran</jta-data-source> 
     <class>classes</class> 
     <exclude-unlisted-classes>true</exclude-unlisted-classes> 
     <properties> 
      <property name="hibernate.hbm2ddl.auto" value="validate" /> 
      <property name="hibernate.show_sql" value="true" /> 
      <property name="hibernate.default_schema" value="icc" /> 
      <property name="jboss.entity.manager.factory.jndi.name" value="java:/UtskicksbegaranOraclePU"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

는 기본적으로, 내가 무엇을 달성하기 위해 노력하고있어 것은 XA 후 다른 큐에 배포됩니다 내 데이터 소스에서 가져 오는 거래입니다 :

여기처럼 내 persistence.xml을 보이는거야.

나는 길을 시작하는 낙타 스프링을 사용하고 있는데,이는 내 구성입니다 :

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans     
     http://www.springframework.org/schema/beans/spring-beans.xsd      
     http://camel.apache.org/schema/spring     
     http://camel.apache.org/schema/spring/camel-spring.xsd> 
    <camelContext id="camelContext_utskicksbegaran-oracle-adapter" xmlns="http://camel.apache.org/schema/spring"> 
     <packageScan> 
      <package>se.sjv.integration.camel.hanterautskick</package> 
     </packageScan> 
    </camelContext> 
</beans> 

스프링을 사용하여 persistence.xml을 선언 지속성 장치에 액세스 할 수있는 다른 방법이 있나요? 내가 뭘 놓치고 있니?

답변

0

이것은 결국 해결되었습니다.
서버 시작시로드 순서와 관련이 있습니다. 어떤 이유로 인해 jboss-deployment-structure.xml을 사용하여 문제가 해결되지 않았습니다. 지금은 WEB-INF/jboss-all.xml를 사용하고 문제의 파일은 내 낙타 통합을 시작하기 전에에 따라 다음이 포함 :

<?xml version="1.0" encoding="UTF-8"?> 
<jboss umlns="urn:jboss:1.0"> 
    <jboss-deployment-dependencies xmlns="urn:jboss:deployment-dependencies:1.0"> 
     <dependency name="activemq-rar.rar" /> 
     <dependency name="ojdbc6.jar" /> 
    </jboss-deployment-dependencies> 
</jboss> 

모든이 원활하게 실행합니다.

관련 문제