当前位置: 首页 > 知识库问答 >
问题:

如何安装PostgreSQL JDBC以在Karaf OSGI中工作?

齐胜涝
2023-03-14
Install Kar feature social_importer.kar/1.0-SNAPSHOT
java.lang.Exception: Could not start bundle    
mvn:org.postgresql/postgresql/9.4-1201-jdbc41 in feature(s) 

T: Unresolved constraint in bundle org.postgresql.jdbc41 
[127]: Unable to resolve 127.0: missing requirement [127.0]
osgi.wiring.package; (osgi.wiring.package=javax.transaction.xa)


Caused by: org.osgi.framework.BundleException: 
Unresolved constraint in bundle org.postgresql.jdbc41 [127]: Unable 
to resolve 127.0: missing requirement [127.0] osgi.wiring.package;
(osgi.wiring.package=javax.transaction.xa)

这可能与Apache Felix无法访问Postgres JDBC有关

karaf@root()> install -s wrap:mvn:postgresql/postgresql/9.4-1201-jdbc41
Bundle IDs:
Error executing command: Error installing bundles:
    Unable to install bundle wrap:mvn:postgresql/postgresql/9.4-1201-jdbc41
karaf@root()> install -s mvn:postgresql/postgresql/9.4-1201-jdbc41
Bundle IDs:
Error executing command: Error installing bundles:
    Unable to install bundle mvn:postgresql/postgresql/9.4-1201-jdbc41
karaf@root()>

我在卡拉夫日志中查看了日志级别的信息。

Caused by: java.lang.NoClassDefFoundError: org/osgi/service/jdbc/DataSourceFactory
    at org.postgresql.osgi.PGBundleActivator.start(PGBundleActivator.java:32)
    at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:645)
    at org.apache.felix.framework.Felix.activateBundle(Felix.java:2154)
    ... 11 more
Caused by: java.lang.ClassNotFoundException: org.osgi.service.jdbc.DataSourceFactory not found by org.postgresql.jdbc41 [5328]
    at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1556)[org.apache.felix.framework-4.4.1.jar:]
    at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:77)[org.apache.felix.framework-4.4.1.jar:]
    at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1993)[org.apache.felix.framework-4.4.1.jar:]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)[:1.8.0_25]

共有1个答案

马华茂
2023-03-14

向Karaf 4.0.1提供Postgresql JDBC驱动程序

        __ __                  ____
       / //_/____ __________ _/ __/
      / ,<  / __ `/ ___/ __ `/ /_
     / /| |/ /_/ / /  / /_/ / __/
    /_/ |_|\__,_/_/   \__,_/_/

  Apache Karaf (4.0.1)

Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown Karaf.
karaf@root()> feature:repo-add mvn:org.ops4j.pax.jdbc/pax-jdbc-features/0.7.0/xml/features
karaf@root()>feature:install  pax-jdbc-spec
karaf@root()>feature:install transaction
karaf@root()>bundle:install -s mvn:org.postgresql/postgresql/9.4-1200-jdbc41
karaf@root()> service:list org.osgi.service.jdbc.DataSourceFactory

[org.osgi.service.jdbc.DataSourceFactory]
-----------------------------------------
 osgi.jdbc.driver.class = org.postgresql.Driver
 osgi.jdbc.driver.name = PostgreSQL JDBC Driver
 osgi.jdbc.driver.version = PostgreSQL 9.4 JDBC4.1 (build 1200)
 service.bundleid = 52
 service.id = 113
 service.scope = singleton
Provided by :
 PostgreSQL JDBC Driver JDBC41 (52)

在Karaf 4.0.1中定义Postgres Pool数据源

理论网址:https://ops4j1.jira.com/wiki/display/paxjdbc/create+datasource+from+config

karaf@root()>feature:install  pax-jdbc-config
karaf@root()>feature:install  pax-jdbc-pool-dbcp2
osgi.jdbc.driver.name=PostgreSQL JDBC Driver-pool-xa

serverName=localhost
databaseName=companymanager
portNumber=5432
user=postgres
password=admin
dataSourceName=companymanager
karaf@root()> service:list javax.sql.DataSource
[javax.sql.DataSource]
----------------------
 databaseName = companymanager
 dataSourceName = companymanager
 felix.fileinstall.filename = file:/C:/apache-karaf-4.0.1/etc/org.ops4j.datasource-companymanager.cfg
 osgi.jdbc.driver.name = PostgreSQL JDBC Driver-pool-xa
 osgi.jndi.service.name = companymanager
 password = admin
 portNumber = 5432
 serverName = localhost
 service.bundleid = 64
 service.factoryPid = org.ops4j.datasource
 service.id = 119
 service.pid = org.ops4j.datasource.3cad9abf-49be-4868-8940-1623481b1363
 service.scope = singleton
 user = postgres
Provided by :
 OPS4J Pax JDBC Config (64)
 类似资料:
  • Debian 安装程序由一些特定功能的元件组成,它们完成各自的安装任务。 每一元件执行任务时,会询问一些任务相关的问题。每个任务又有各自的 优先级,可以在安装程序开始时设置优先级决定哪些问题会问到。 执行默认安装时,只有必要的(高优先级)的问题会被问到。 使得安装过程可以高度自动化,几乎不需用户干预。 元件按次序字典执行;至于哪些元件会执行,这取决于您使用的安装方法, 以及您的硬件。对于没有询问的

  • Debian 安装程序由一些特定功能的元件组成,它们完成各自的安装任务。 每一元件执行任务时,会询问一些任务相关的问题。每个任务又有各自的 优先级,可以在安装程序开始时设置优先级决定哪些问题会问到。 执行默认安装时,只有必要的(高优先级)的问题会被问到。 使得安装过程可以高度自动化,几乎不需用户干预。 元件按次序字典执行;至于哪些元件会执行,这取决于您使用的安装方法, 以及您的硬件。对于没有询问的

  • Debian 安装程序由一些特定功能的元件组成,它们完成各自的安装任务。 每一元件执行任务时,会询问一些任务相关的问题。每个任务又有各自的 优先级,可以在安装程序开始时设置优先级决定哪些问题会问到。 执行默认安装时,只有必要的(高优先级)的问题会被问到。 使得安装过程可以高度自动化,几乎不需用户干预。 元件按次序字典执行;至于哪些元件会执行,这取决于您使用的安装方法, 以及您的硬件。对于没有询问的

  • 问题内容: 在PyQt4网站上,他们安装软件包的说明是下载tarball并使用配置文件。我有两个版本的Python,一个是我的普通系统,另一个在anaconda内。我不确定如何在anaconda中安装它。是否有conda命令安装PyQt4? 问题答案: 费耶 PyQt现在可通过conda在所有平台上使用! 用得到这些#Python绑定Qt框架。@ 1:02 PM-2014年5月1日 https:/

  • 问题内容: 我是InfluxDB的新手。我找不到有关在Windows上安装InfluxDB的任何详细信息。有什么方法可以在Windows机器上安装它,还是需要出于开发目的使用Linux服务器? 问题答案: 当前influxdb的0.9分支是go,可以使用以下命令在Windows上编译: 当然,您将需要go(> 1.4),git和hg。 如果您不想编译自己的版本,也可以在此处找到我自己的v0.9.0

  • 本文向大家介绍如何在centos7中安装nginx,包括了如何在centos7中安装nginx的使用技巧和注意事项,需要的朋友参考一下 安装所需环境 一. gcc 安装 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: yum install gcc-c++ 二. PCRE pcre-devel 安装 PCRE(Perl Compati