2013-01-15 4 views
1

나는 문제 같은 종류가 있습니다. 나는 "완/ENV"없이 JNDI 이름을 제공해야합니다,MyBatis로 여러 JNDI 이름은

<dataSource type="JNDI"> 
    <property name="data_source" value="java:comp/env/jdbc/myJndiName"/> 
</dataSource> 

그러나 웹스 제이 보스에 : 그래서, 예를 들어, 톰캣의 경우 나는 모양을 데이터 소스에 대한 JNDI 이름을 사용하려면

<dataSource type="JNDI"> 
    <property name="data_source" value="java:jdbc/myJndiName"/> 
</dataSource> 

또는 구성에서 제공 한 jndi 이름과 같은 것입니다. "comp/env"접두어를 사용하여 Tomcat에서와 같은 이름을 사용하면 분명히 작동하지 않습니다.

방법이 있나요, 그래서 다른 웹 서비스에 대한 응용 프로그램은 보편적 만들 수 있을까? jndi 이름 가용성을 확인하고 올바르게 설정하는 자체 DataSource 랩을 작성할 생각이었습니다. 어떤 아이디어입니까?

답변

2

의 MyBatis 환경은 당신이 찾고있는 무엇을 할 수있다. 귀하의 경우에는

http://mybatis.github.com/mybatis-3/configuration.html#environments

는 config 당신은 OSGI 환경에서 각 환경

InputStream in = Resources.getResourceAsStream("myconfig.xml"); 
SqlSessionFactory tomcatSessionFactory = new SqlSessionFactoryBuilder().build(in, "tomcat"); 
SqlSessionFactory websphereSessionFactory = new SqlSessionFactoryBuilder().build(in, "websphere"); 
1

에 대한 SQL 세션 공장을 만들어야합니다

<environments default="tomcat"> 
    <environment id="tomcat"> 
     <transactionManager type="JDBC"/> 
     <dataSource type="JNDI"> 
      <property name="data_source" value="java:comp/env/jdbc/myJndiName"/> 
     </dataSource> 
    </environment> 
    <environment id="websphere"> 
     <transactionManager type="JDBC"/> 
     <dataSource type="JNDI"> 
      <property name="data_source" value="java:jdbc/myJndiName"/> 
     </dataSource> 
    </environment> 
</environments> 

같은 (양자리 JNDI를 볼 수 있었다), look up config는 다음과 같아야합니다.

<environment id="development"> 
    <transactionManager type="JDBC"/> 
    <dataSource type="JNDI"> 
    <property name="data_source" value="osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/Ds)"/> 
    </dataSource>