我目前正在开发一个camel路由,它从netty4/mllpendpoint读取并将hl7消息存储到amqp队列。
这是我的环境:
这是我的pom.xml
<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>*****</groupId>
<artifactId>*****</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>*****</name>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>3.3.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-SymbolicName>${project.artifactId}-bundle</Bundle-SymbolicName>
<Bundle-Activator>${project.groupId}.${project.artifactId}.*****.*****</Bundle-Activator>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.core</artifactId>
<version>6.0.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.8.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.1</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>2.18.3</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-amqp</artifactId>
<version>2.18.3</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-netty4</artifactId>
<version>2.18.3</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-hl7</artifactId>
<version>2.18.3</version>
</dependency>
</dependencies>
我可以在eclipse中使用“main”类运行该项目,没有问题。但当我将捆绑包部署到Karaf容器时,我遇到了一些问题。
我正在用previus pom生成捆绑罐。xml文件,带有ApacheFelix插件,maven clean package
goal。
karaf安装是干净的。我只设置了以下内容:
功能:回购添加artemis功能:安装artemis amqp
功能:回购添加camel功能:安装camel-core camel-netty4 camel-amqp camel-hl7
我将jar捆绑包复制到部署文件夹中,并尝试用bundle: start my-bundle
启动它,但我得到了以下错误。
Error executing command: Error executing command on bundles:
Error starting bundle 110: Unable to resolve demograficos-bundle [110](R 110.0): missing requirement [demograficos-bundle [110](R 110.0)] osgi.wiring.package; (&(osgi.wiring.package=javax.jms)(version>=1.1.0)(!(version>=2.0.0))) Unresolved requirements: [[demograficos-bundle [110](R 110.0)] osgi.wiring.package; (&(osgi.wiring.package=javax.jms)(version>=1.1.0)(!(version>=2.0.0)))]
我由此了解到,容器中缺少jms实现。
我尝试了特性:安装jms
,但现在我得到了以下错误
Error executing command: Error executing command on bundles: Error starting bundle 110: Uses constraint violation. Unable to resolve resource demograficos-bundle [demograficos-bundle [110](R 110.0)] because it is exposed to package 'javax.jms' from resources org.apache.geronimo.specs.geronimo-jms_1.1_spec [org.apache.geronimo.specs.geronimo-jms_1.1_spec [120](R 120.0)] and org.apache.geronimo.specs.geronimo-jms_2.0_spec [org.apache.geronimo.specs.geronimo-jms_2.0_spec [75](R 75.0)] via two dependency chains. Chain 1: demograficos-bundle [demograficos-bundle [110](R 110.0)] import: (&(osgi.wiring.package=javax.jms)(version>=1.1.0)(!(version>=2.0.0))) | export: osgi.wiring.package: javax.jms org.apache.geronimo.specs.geronimo-jms_1.1_spec [org.apache.geronimo.specs.geronimo-jms_1.1_spec [120](R 120.0)] Chain 2: demograficos-bundle [demograficos-bundle [110](R 110.0)] import: (&(osgi.wiring.package=org.apache.camel.component.amqp)(version>=2.18.0)(!(version>=3.0.0))) | export: osgi.wiring.package=org.apache.camel.component.amqp; uses:=javax.jms org.apache.camel.camel-amqp [org.apache.camel.camel-amqp [86](R 86.0)] import: (&(osgi.wiring.package=javax.jms)(version>=1.1.0)(!(version>=3.0.0))) | export: osgi.wiring.package: javax.jms org.apache.geronimo.specs.geronimo-jms_2.0_spec [org.apache.geronimo.specs.geronimo-jms_2.0_spec [75](R 75.0)] Unresolved requirements: [[demograficos-bundle [110](R 110.0)] osgi.wiring.package; (&(osgi.wiring.package=org.apache.camel.component.amqp)(version>=2.18.0)(!(version>=3.0.0)))]
但我看不到列出的两个previus geronimo包,只有一个
START LEVEL 100 , List Threshold: 50
ID | State | Lvl | Version | Name
----+-----------+-----+----------------+---------------------------------------------------------------------------------------------------
28 | Active | 80 | 4.1.1 | Apache Karaf :: OSGi Services :: Event
52 | Active | 80 | 19.0.0 | Guava: Google Core Libraries for Java
53 | Active | 80 | 4.1.6.Final | Netty/Buffer
54 | Active | 80 | 4.1.6.Final | Netty/Codec
55 | Active | 80 | 4.1.6.Final | Netty/Codec/HTTP
56 | Active | 80 | 4.1.6.Final | Netty/Common
57 | Active | 80 | 4.1.6.Final | Netty/Handler
58 | Active | 80 | 4.1.6.Final | Netty/Resolver
59 | Active | 80 | 4.1.6.Final | Netty/Transport
60 | Active | 80 | 3.0.0 | Expression Language 3.0 API
61 | Active | 80 | 1.2.0 | CDI APIs
62 | Active | 80 | 1.2 | javax.interceptor API
63 | Active | 80 | 1.2 | javax.transaction API
64 | Active | 80 | 2.0.0 | ActiveMQ Artemis AMQP Protocol
65 | Active | 80 | 2.0.0 | ActiveMQ Artemis Native POM
66 | Active | 80 | 2.0.0 | ActiveMQ Artemis Server OSGi
67 | Active | 80 | 1.1.1 | Apache Aries Transaction Blueprint
68 | Active | 80 | 2.1.0 | Apache Aries Transaction Blueprint
69 | Active | 80 | 1.3.2 | Apache Aries Transaction Manager
70 | Active | 80 | 1.9.2 | Apache Commons BeanUtils
71 | Active | 80 | 3.2.2 | Apache Commons Collections
72 | Active | 80 | 1.0.2 | Apache Felix Coordinator Service
75 | Active | 80 | 1.0.0.alpha-2 | Apache Geronimo JMS Spec 2.0
76 | Active | 80 | 1.0.0.alpha-1 | Apache Geronimo JSon Spec 1.0
77 | Active | 80 | 0.9.5 | Johnzon :: Core
81 | Active | 80 | 0.20.0 | QpidJMS Client
82 | Active | 80 | 0.16.0 | proton-j
83 | Active | 80 | 1.0.0.2 | Apache ServiceMix :: Bundles :: javax.inject
84 | Active | 80 | 3.3.0.Final | JBoss Logging 3
85 | Active | 80 | 3.6.9.Final | JGroups
86 | Active | 50 | 2.18.3 | camel-amqp
87 | Active | 50 | 2.18.3 | camel-catalog
88 | Active | 50 | 2.18.3 | camel-commands-core
89 | Active | 50 | 2.18.3 | camel-core
90 | Active | 50 | 2.18.3 | camel-jms
91 | Active | 80 | 2.18.3 | camel-karaf-commands
92 | Active | 50 | 1.6.0 | Commons Pool
105 | Active | 50 | 4.1.7.Final | Netty/Transport/Native/Epoll
106 | Active | 50 | 2.18.3 | camel-netty4
107 | Active | 50 | 2.2 | HAPI - Java HL7 API - OSGI Bundle
108 | Active | 50 | 2.18.3 | camel-hl7
109 | Active | 50 | 2.0.14 | Apache MINA Core
110 | Installed | 80 | 0.0.1.SNAPSHOT | **********
111 | Active | 80 | 2.0.0 | ActiveMQ Artemis HornetQ Protocol
112 | Active | 80 | 2.0.0 | ActiveMQ Artemis HQClient Protocol
114 | Active | 80 | 4.1.6.Final | Netty/Codec/MQTT
115 | Active | 80 | 2.0.0 | ActiveMQ Artemis MQTT Protocol
116 | Active | 80 | 2.0.0 | ActiveMQ Artemis OpenWire Protocol
117 | Active | 80 | 2.0.0 | ActiveMQ Artemis STOMP Protocol
118 | Active | 80 | 1.0.1 | geronimo-j2ee-management_1.1_spec
119 | Active | 80 | 1.11.0 | hawtbuf
123 | Active | 80 | 4.1.1 | Apache Karaf :: JMS :: Core
karaf@root()> bundle:tree-show *****
Bundle **********-bundle [110] is currently INSTALLED
- import javax.jms;version="[1.1,2)": resolved using org.apache.geronimo.specs.geronimo-jms_1.1_spec [122]
- import org.apache.camel;version="[2.18,3)": resolved using org.apache.camel.camel-core [89]
- import org.apache.camel.builder;version="[2.18,3)": resolved using org.apache.camel.camel-core [89]
- import org.apache.camel.component.amqp;version="[2.18,3)": resolved using org.apache.camel.camel-amqp [86]
- import org.apache.camel.component.hl7;version="[2.18,3)": resolved using org.apache.camel.camel-hl7 [108]
- import org.apache.camel.impl;version="[2.18,3)": resolved using org.apache.camel.camel-core [89]
- import org.apache.camel.model;version="[2.18,3)": resolved using org.apache.camel.camel-core [89]
- import org.apache.camel.spi;version="[2.18,3)": resolved using org.apache.camel.camel-core [89]
- import org.osgi.framework;version="[1.8,2)": resolved using org.apache.felix.framework [0]
- import org.slf4j;version="[1.7,2)": resolved using org.ops4j.pax.logging.pax-logging-api [5]
- import org.slf4j;version="[1.7,2)": resolved using org.ops4j.pax.logging.pax-logging-api [5]
- import org.slf4j;version="[1.7,2)": resolved using org.ops4j.pax.logging.pax-logging-api [5]
Warning: the below tree is a rough approximation of a possible resolution
demograficos-bundle [110]
+- org.apache.geronimo.specs.geronimo-jms_1.1_spec [122]
| +- javax.transaction-api [63]
| +- javax.enterprise.cdi-api [61]
| | +- javax.el-api [60]
| | +- org.apache.servicemix.bundles.javax-inject [83]
| | +- javax.interceptor-api [62]
| +- javax.interceptor-api [62]
+- org.apache.camel.camel-core [89]
| +- org.ops4j.pax.logging.pax-logging-api [5]
| | +- org.apache.karaf.services.eventadmin [3]
| | +- org.apache.felix.metatype [2]
| | +- org.apache.felix.configadmin [7]
| +- org.apache.servicemix.bundles.spring-tx [102]
| +- org.ops4j.pax.logging.pax-logging-api [5]
| +- org.apache.servicemix.bundles.aopalliance [93]
| +- javax.transaction-api [63]
| +- org.apache.servicemix.bundles.spring-aop [95]
| | +- org.ops4j.pax.logging.pax-logging-api [5]
| | +- org.apache.servicemix.bundles.aopalliance [93]
| | +- org.apache.commons.pool [92]
| | +- org.apache.servicemix.bundles.spring-beans [96]
| | | +- org.ops4j.pax.logging.pax-logging-api [5]
| | | +- org.apache.servicemix.bundles.javax-inject [83]
| | | +- org.apache.servicemix.bundles.spring-core [99]
| | | +- org.ops4j.pax.logging.pax-logging-api [5]
| | +- org.apache.servicemix.bundles.spring-core [99]
| +- org.apache.servicemix.bundles.spring-beans [96]
| +- org.apache.servicemix.bundles.spring-core [99]
| +- org.apache.servicemix.bundles.spring-context [97]
| +- org.apache.geronimo.specs.geronimo-jms_2.0_spec [75]
| | +- javax.transaction-api [63]
| +- org.ops4j.pax.logging.pax-logging-api [5]
| +- org.apache.servicemix.bundles.javax-inject [83]
| +- org.apache.servicemix.bundles.spring-expression [100]
| | +- org.ops4j.pax.logging.pax-logging-api [5]
| | +- org.apache.servicemix.bundles.spring-core [99]
| +- org.apache.servicemix.bundles.aopalliance [93]
| +- javax.interceptor-api [62]
| +- org.apache.servicemix.bundles.spring-aop [95]
| +- org.apache.servicemix.bundles.spring-beans [96]
| +- org.apache.servicemix.bundles.spring-core [99]
+- org.apache.camel.camel-amqp [86]
| +- org.apache.camel.camel-core [89]
| +- org.apache.geronimo.specs.geronimo-jms_2.0_spec [75]
| +- org.apache.qpid.jms.client [81]
| | +- org.apache.geronimo.specs.geronimo-jms_2.0_spec [75]
| | +- org.ops4j.pax.logging.pax-logging-api [5]
| | +- io.netty.handler [57]
| | | +- io.netty.codec [54]
| | | | +- io.netty.buffer [53]
| | | | | +- io.netty.common [56]
| | | | | +- org.ops4j.pax.logging.pax-logging-api [5]
| | | | +- io.netty.transport [59]
| | | | | +- io.netty.resolver [58]
| | | | | | +- io.netty.common [56]
| | | | | +- io.netty.buffer [53]
| | | | | +- io.netty.common [56]
| | | | +- io.netty.common [56]
| | | +- io.netty.buffer [53]
| | | +- io.netty.transport [59]
| | | +- io.netty.common [56]
| | +- io.netty.codec-http [55]
| | | +- io.netty.codec [54]
| | | +- io.netty.handler [57]
| | | +- io.netty.buffer [53]
| | | +- io.netty.transport [59]
| | | +- io.netty.common [56]
| | +- org.apache.qpid.proton-j [82]
| | +- io.netty.buffer [53]
| | +- io.netty.transport [59]
| | +- io.netty.common [56]
| +- org.apache.camel.camel-jms [90]
| +- org.apache.camel.camel-core [89]
| +- org.apache.geronimo.specs.geronimo-jms_2.0_spec [75]
| +- org.ops4j.pax.logging.pax-logging-api [5]
| +- org.apache.servicemix.bundles.spring-jms [101]
| | +- org.apache.geronimo.specs.geronimo-jms_2.0_spec [75]
| | +- org.ops4j.pax.logging.pax-logging-api [5]
| | +- org.apache.servicemix.bundles.spring-tx [102]
| | +- org.apache.servicemix.bundles.spring-expression [100]
| | +- org.apache.servicemix.bundles.aopalliance [93]
| | +- org.apache.servicemix.bundles.spring-aop [95]
| | +- io.netty.transport [59]
| | +- org.apache.servicemix.bundles.spring-beans [96]
| | +- org.apache.servicemix.bundles.spring-core [99]
| | +- io.netty.common [56]
| | +- org.apache.servicemix.bundles.spring-context [97]
| +- org.apache.servicemix.bundles.spring-tx [102]
| +- org.apache.servicemix.bundles.spring-beans [96]
| +- org.apache.servicemix.bundles.spring-core [99]
| +- org.apache.servicemix.bundles.spring-context [97]
+- org.apache.camel.camel-hl7 [108]
| +- org.apache.camel.camel-core [89]
| +- io.netty.codec [54]
| +- org.ops4j.pax.logging.pax-logging-api [5]
| +- org.apache.camel.camel-netty4 [106]
| | +- org.apache.camel.camel-core [89]
| | +- io.netty.codec [54]
| | +- org.ops4j.pax.logging.pax-logging-api [5]
| | +- io.netty.handler [57]
| | +- io.netty.transport [59]
| | +- io.netty.buffer [53]
| | +- org.apache.commons.pool [92]
| | +- io.netty.transport-native-epoll [105]
| | | +- io.netty.buffer [53]
| | | +- io.netty.transport [59]
| | | +- io.netty.common [56]
| | +- io.netty.common [56]
| +- org.apache.mina.core [109]
| | +- org.ops4j.pax.logging.pax-logging-api [5]
| +- io.netty.buffer [53]
| +- ca.uhn.hapi.osgi-base [107]
| | +- org.apache.geronimo.specs.geronimo-jms_2.0_spec [75]
| +- io.netty.transport [59]
+- org.apache.felix.framework [0]
+- org.ops4j.pax.logging.pax-logging-api [5]
WARNING: multiple bundles are exporting package javax.jms
- org.apache.geronimo.specs.geronimo-jms_2.0_spec [75]
- org.apache.geronimo.specs.geronimo-jms_1.1_spec [122]
我真的很难理解jar/bundle版本在karaf下是如何协同工作的。
有什么想法吗?也许我应该在pom中更改felix插件。xml
看起来您已经声明了自己的包导出了javax。jms包的版本为1.1,而Artemis依赖于导出javax的捆绑包。jms在2.0版中,请确保您也依赖于2.0版javax。jms版本(因为这是artemis使用的版本),您的问题将消失。
在我的一个捆绑包在Karaf我有一个依赖如下所述:- 然后,我在。创建了捆绑包。我正在使用包装,但在将包裹放入Karaf后。我看到它正在导入库的1.0.1版本。然而,如果我将1.0.3版本的放在一个新的Karaf实例中,一切都会正常工作。下面是我从Karaf web控制台看到的导入:- 同时检查我看到了bundle的1.0.1版本:- 因为我的捆绑包正在挑选dogstatsd客户端的1.0.1版,
我正在学习OSGi框架。我发现捆绑包由。类文件和清单文件。现在假设我有两个包A和B,包B依赖于包A的服务。因此,在编译bundle B时,我必须将Bundle A的服务类保存在bundle B的类路径中,或者必须将它(Bundle A的服务)保存在bundle B中,以便编译器可以编译。现在,如果我们这样做,那么模块化是如何实现的,以及这两个包是如何独立的。请帮帮忙。谢谢
我刚来卡拉夫。我有一个jar有一个类App和一个方法main。当我将jar放入Karaf日志服务控制台时,bundle已启动,但似乎什么也没有发生。(jar)做的第一件事是编写一个简单的数据库,这样我就可以查看它是否正在运行(没有生成日志文件,但应该生成一个)。 这个罐子依赖于许多其他罐子。我们的sysadmin不会在生产服务器上安装Maven。helper jar(比如mysql-connect
>信息9346---[main]B.C.Checkin.Checkin.CheckinApplication :在MacBook-air-de-thomaz.local上启动CheckinApplication v0.0.1-snapshot.jar(/users/thomaz/documents/unitri/6periodo/gestaodainovacao/checkin-api/targe
在功能上。xml(Apache Karaf供应机制)标签<code>特性 例如:
我有两个api调用,我需要根据第一个api调用结果获取第二个api调用结果,之后我需要合并两个api调用响应,让我写在这里 > Api调用:https://localhost:8080/projects这是第一次api调用 [ { 第二个 api 调用在 (http://localhost:8080/2) http://localhost:8080/projectId 此结果,如下所示 [ 现在我