我试图创建一个使用sqlserver数据库作为端点的骆驼路由。我已经了解到,在OSGi中集成数据源的常见方式是将它们导出为OSGi服务。将sqljdbc4导出为OSGi服务
出于测试和开发的目的,我使用了H2内存数据库并成功将其导出为服务。当我试图用SQL Server做同样的事情时,我遇到了一些问题。
我下载了SQL Server的JDBC驱动程序,并添加了的.jar到我的本地仓库这样:
$ mvn install:install-file -Dpath=<path-to-jar>
-DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0.2206
-Dpackaging=jar
我接着就包裹的.jar在OSGi束通过创建一个pom.xml像这样:
<?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>
我能够成功安装包在Karaf所以后来我继续创建我的服务蓝图:
现在,当我将蓝图复制到/ deploy没有任何反应时,没有安装bundle,也没有安装日志。当我为H2数据源做同样的事情时,安装了一个bundle。
我使用JBoss 6.2.1保险丝,骆驼版本2.15.1和Karaf 2.4.0
我会深深体会到在这个问题上的任何帮助。
您是否将blueprint.xml视为karaf中的一个包? –
@ChristianSchneider,对于H2数据源,是的,但不是sql服务器之一。我想我可能已经搞错了包装驱动程序,但我不确定。 – noMad17
尝试使用换行安装原始驱动程序:mvn:protocol –