2016-07-26 2 views
0

sqlserver-database를 끝점으로 사용하여 낙타 경로를 만들려고합니다. OSGi에서 데이터 소스를 통합하는 일반적인 방법은이를 OSGi 서비스로 내보내는 것입니다.OSGi 서비스로 sqljdbc4 내보내기

테스트 및 개발 목적으로 H2 메모리 내 데이터베이스를 사용하고이를 서비스로 성공적으로 내 보냈습니다. SQL Server에서 동일한 작업을 수행하려고했지만 몇 가지 문제가있었습니다. pom.xml 파일을 생성하여

$ mvn install:install-file -Dpath=<path-to-jar> 
    -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0.2206 
    -Dpackaging=jar 

내가 다음 OSGi에서 번들에 .JAR 포장 진행 :

가 나는 SQL Server JDBC 드라이버를 다운로드하고 같은 내 로컬 메이븐 저장소에 .JAR 추가 과 같이 :

<?xml version="1.0" encoding="utf-8"?> 
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/1.0.0"> 
    <bean id="dataSource" class="com.microsoft.sqlserver.jdbc.SQLServerDataSource"> 
     <property name="URL" value=<db-connectionString> /> 
     <property name="user" value=<username> /> 
     <property name="password" value=<pw> /> 
    </bean> 
    <service id="dataSourceService" ref="dataSource" interface="javax.sql.DataSource"> 
     <service-properties> 
      <entry key="osgi.jndi.service.name" value="jdbc/myDb" /> 
     </service-properties> 
    </service> 
</blueprint> 
,691,363 : 나는 성공적으로 Karaf에서 번들을 설치 할 수 있었다

<?xml version="1.0" encoding="utf-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.microsoft</groupId> 
    <artifactId>sqljdbc4-osgi-bundle</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <name>SQL Server JDBC Driver</name> 
    <packaging>bundle</packaging> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.felix</groupId> 
       <artifactId>maven-bundle-plugin</artifactId> 
       <version>2.3.7</version> 
       <extensions>true</extensions> 
       <configuration> 
        <instructions> 
         <Embed-Dependency>*</Embed-Dependency> 
         <_exportcontents> 
          com.microsoft.sqlserver.jdbc.* 
          , microsoft.sql.* 
         </_exportcontents> 
        </instructions> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
    <dependencies> 
     <dependency> 
      <groupId>com.microsoft.sqlserver</groupId> 
      <artifactId>sqljdbc4</artifactId> 
      <version>4.0.2206</version> 
     </dependency> 
    </dependencies> 
</project> 

그럼 난 내 서비스 청사진을 만들 나서서210

이제는 청사진을 복사/배포 할 때 번들이 설치되지 않고 로그에 아무것도 표시되지 않습니다. H2 데이터 소스에 대해 동일한 작업을 수행 할 때 번들이 설치되었습니다.

나는이 문제에 어떤 도움을 주셔서 감사 깊이 것이다 JBoss의 퓨즈 6.2.1, 낙타 버전 2.15.1 및 Karaf 2.4.0

을 사용하고 있습니다.

+0

karaf에서 blueprint.xml이 번들로 표시됩니까? –

+0

@ChristianSchneider, H2 데이터 소스의 경우 예 (SQL Server는 아니지만). 나는 내가 올바르게 드라이버를 감싸고있는 것에 열중했을지도 모른다라고 생각한다. 그러나 나는 확실하지 않다. – noMad17

+0

랩 : mvn : 프로토콜 –

답변

1

pax-jdbc를 살펴 보는 것이 좋습니다.

https://ops4j1.jira.com/wiki/display/PAXJDBC/Create+DataSource+from+config https://ops4j1.jira.com/wiki/display/PAXJDBC/Pooling+and+XA+support+for+DataSourceFactory

그것은 보편적 인 방법으로 데이터베이스에 액세스 할 OSGi의 사양에서 된 DataSourceFactory를 사용합니다. 또한 pax-jdbc-mssql이라는 mssql을 적용하기위한 karaf 기능이 있습니다.

기본적으로 설정 파일을 사용하여 mssql 용 데이터 소스를 만들 수 있습니다. 당신은 그것에 대한 청사진을 만들 필요가 없습니다.

관련 문제