我试图查找一个连接工厂在一个代码,部署为osgi捆绑在servicemix(karaf)的一部分
final Hashtable<String, Object> jndiContext = new Hashtable<String, Object>();
jndiContext.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
jndiContext.put(Context.SECURITY_AUTHENTICATION, "none");
jndiContext.put(Context.PROVIDER_URL, pJndiLDAPserver);
ctx = new InitialContext(jndiContext);
ConnectionFactory lResult = (ConnectionFactory) ctx.lookup(pJndiCFname);
我面临的问题是-
我的pom中有以下依赖项。xml-
<dependency>
<groupId>javax.jms</groupId>
<artifactId>javax.jms-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>com.ibm.mq.osgi</groupId>
<artifactId>java</artifactId>
<version>9.0.0.0</version>
</dependency>
<dependency>
<groupId>com.ibm.msg.client.osgi.jms</groupId>
<artifactId>prereq</artifactId>
<version>9.0.0.0</version>
</dependency>
<dependency>
<groupId>com.ibm.msg.client.osgi</groupId>
<artifactId>jms</artifactId>
<version>9.0.0.0</version>
</dependency>
<dependency>
<groupId>com.ibm.msg.client.osgi.commonservices</groupId>
<artifactId>j2se</artifactId>
<version>9.0.0.0</version>
</dependency>
<dependency>
<groupId>com.ibm.mq.osgi</groupId>
<artifactId>allclient</artifactId>
<version>9.0.0.0</version>
</dependency>
<dependency>
<groupId>com.ibm.mq.osgi</groupId>
<artifactId>allclientprereqs</artifactId>
<version>9.0.0.0</version>
</dependency>
<dependency>
<groupId>com.ibm.msg.client.osgi</groupId>
<artifactId>nls</artifactId>
<version>9.0.0.0</version>
</dependency>
<dependency>
<groupId>com.ibm.msg.client.osgi.wmq</groupId>
<artifactId>nls</artifactId>
<version>9.0.0.0</version>
</dependency>
<dependency>
<groupId>com.ibm.msg.client.osgi.wmq</groupId>
<artifactId>prereq</artifactId>
<version>9.0.0.0</version>
</dependency>
<dependency>
<groupId>com.ibm.msg.client.osgi</groupId>
<artifactId>wmq</artifactId>
<version>9.0.0.0</version>
</dependency>
<dependency>
<groupId>com.csg.npms.pilatus</groupId>
<artifactId>pilatus-common</artifactId>
<version>0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.ops4j.pax.logging</groupId>
<artifactId>pax-logging-api</artifactId>
<version>1.8.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.core</artifactId>
<version>4.3.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0-m09</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.1.4</version>
<scope>provided</scope>
</dependency>
同样的com。ibm dependency已作为karaf捆绑包的一部分安装。
因此,关于第2点,我如何绕过Karaf(org.apache.aries.jndi.DelegateContext)中的默认jndi aries查找,从而为我提供LdapContextFactory对象,而不是DelegateContext。我是否错过了卡拉夫mq中的任何罐子。
虽然我不知道如何绕过karaf中的默认jndi查找,这是我目前正在努力解决的问题,我试图找出如何让它使用我需要的初始上下文工厂,但我能够通过蓝图中的bean直接实例化MQ连接工厂,从而使其工作,然后,您可以将其命名,并将其作为一个普通服务从jndi引用,如下所示:
<bean id="wmqcf" class="com.ibm.mq.jms.MQQueueConnectionFactory">
<property name="hostname" value="my.host">
...port, channel, queue manager, etc ...
</bean>
<service interface="javax.jms.ConnectionFactory" ref="wmqcf">
<service-properties>
<entry key="osgi.jndi.service.name" value="jms/wmqcf">
</service-properties>
</srevice>
这样,您就不需要担心任何网桥、池等问题。这是在wmq应用程序中获得连接工厂的一种快速方法。
这是错误的关键部分:
Unresolved requirements: [[org.apache.qpid.jms.client [464](R 464.8)] osgi.wiring.package; (&(osgi.wiring.package=javax.jms (version>=1.1.0)(!(version>=2.0.0)))
这表示包名为org。阿帕奇。qpid。jms。无法解析客户端,因为它导入了包
javax。jms
但是没有其他包导出这个包javax。jms
。在OSGi中,每个导入都必须与该包的导出相匹配。此外还有一个版本限制:您需要版本[1.1.0,2.0.0)
,即至少1.1.0但小于2.0.0。
我建议使用Maven Central的以下捆绑包:https://search.maven.org/#artifactdetails|组织。jboss。spec.javax。jms | jboss-jms-api|1.1|1.0.1。最后的|罐子。
例如: 是否有一种方法可以指定默认情况下总是添加的所有条件,而不在代码本身中提及它?在Hibernate core中有一个注释,但它不能用于mongo文档。
问题内容: 显而易见的答案是使用,但是我们最近发现这可能不是正确的答案。有人告诉我,结果在某些情况下不同于java.io类使用的实际默认字符集。看起来Java保留了2套默认字符集。有人对这个问题有见解吗? 我们能够重现一个失败案例。这是一种用户错误,但仍可能会暴露所有其他问题的根本原因。这是代码, 我们的服务器要求使用Latin-1中的默认字符集来处理传统协议中的某些混合编码(ANSI / Lat
问题内容: 用例:有一个发布为https:// abcd / zz?wsdl 的Web服务 我想做的就是查询此URI,如果我收到一个有效的WSDL,则返回一个布尔值“ true”,否则返回“ false”。现在,如果我通过Chrome浏览器访问此URL,则必须手动执行一个接受证书警告上,然后下载WSDL。但是如何通过Java / HttpsURLConnection做到这一点 我得到一个错误: 线
我正试图用bde2020提供的图像构建一个轻量级的最小hadoop堆栈(学习目的)。现在,堆栈包括(除其他外) 名称节点 基本上,我从大数据欧洲官方docker撰写开始,并根据他们的留档添加了色调图像 色调的文件浏览器无法访问HDFS: 将所有服务显式放到同一网络上 当我登录到hue的容器时,我可以看到namenode的端口9870是打开的()。50070不是。我认为我的问题与网络无关。尽管编辑了
问题内容: 我修改了一个表格,以这种方式向其中添加状态列 但是,对于创建的任何新ITEM,SQLite似乎都不会将N添加到该列中。语法是否错误,或者SQLite及其对默认值的支持是否存在任何问题。 我正在使用SQLite 3.6.22 问题答案: 对我来说看上去很好。 这是文档。 转储您的模式,并 在调用ALTER TABLE之后但在INSERT之前 验证 表结构是否存在。如果它在事务中,请 确保
我对ActiveMQ非常陌生,希望能在设置tomEE的默认内部ActiveMQ代理方面提供一些帮助。具体来说,任何一本书的样本。xml将非常有用。