我想为我的Glassfish服务器上托管的JMS主题创建一个非常简单的JMS独立客户端.

我的项目是使用maven构建的.

我知道在使用JMS依赖关系时似乎有些混乱,所以,我在我的pom中使用了哪些依赖关系

>连接到我的JNDI上下文
>能够阅读我的JMS主题吗?

我的Java测试方法是

/** Thanks to WELD CDI,this method is not static */
public void main(@Observes ContainerInitialized event) throws Throwable {
    Context context = new InitialContext();
    ConnectionFactory factory = (ConnectionFactory) context.lookup(JMSNotifierConstants.CONNECTION_FACTORY_NAME);
    Connection connection = factory.createConnection();
    Topic topic = (Topic) context.lookup(JMSNotifierConstants.NOTIFICATION_TOPIC);
    Session session = connection.createSession(false,Session.AUTO_ACKNowLEDGE);
    MessageConsumer consumer = session.createConsumer(topic);
    connection.start();
    while (true) {
        Message received = consumer.receive();
        System.out.println(received);
    }
}

而我的pom目前包含以下依赖项

<dependency>
        <groupId>javax.enterprise</groupId>
        <artifactId>cdi-api</artifactId>
        <version>1.0-SP1</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.weld</groupId>
        <artifactId>weld-se</artifactId>
        <version>1.0.1-Final</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.weld</groupId>
        <artifactId>weld-logger</artifactId>
        <version>1.0.0-CR2</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.6.1</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-jdk14</artifactId>
        <version>1.6.1</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.jms</artifactId>
        <version>3.0</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.glassfish.extras</groupId>
        <artifactId>appserv-rt</artifactId>
        <version>3.1</version>
    </dependency>

解决方法

好的,这个很棘手.

经过一些搜索和尝试后,我删除了焊接依赖项(为了回到更经典的主要).

然后,我用我的(旧式)appserv-rt.jar替换了

<dependency>
        <groupId>org.glassfish.appclient</groupId>
        <artifactId>gf-client</artifactId>
        <version>3.1</version>
        <type>pom</type>
        <scope>compile</scope>
    </dependency>

这并没有什么变化,因为gf-client为Glassfish提供了所有罐子,这显然会产生很多罐子(希望有7000来优化罐子数量,尽管我们都知道过早优化).

因此,一旦完成,完全可以使用EJB远程接口,但不能使用JMS(由于难以理解的原因).为了使JMS与gf-client一起工作,必须为imqjmsra.jar和imqbroker.jar创建maven依赖项,两者都位于%GLASSFISH3_INSTALL_DIR%/ glassfish / lib / install / applications / jmsra中.此外,由于imqjmsra.jar内部使用imqbroker.jar,我建议您创建以下poms:

<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.glassfish.external.jms</groupId>
  <artifactId>imqjmsra</artifactId>
  <version>3.1.0</version>
  <description>POM was created by Sonatype Nexus</description>
  <dependencies>
    <dependency>
          <groupId>org.glassfish.external.jms</groupId>
          <artifactId>imqbroker</artifactId>
          <version>3.1.0</version>
    </dependency>
  </dependencies>
</project>

与imqjmsra.jar相关联

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.glassfish.external.jms</groupId>
  <artifactId>imqbroker</artifactId>
  <version>3.1.0</version>
  <description>POM was created by Sonatype Nexus</description>
</project>

与imqbroker.jar相关联.

显然,当我使用Nexus存储库管理时,我更容易使用Nexus“上传工件页面”在我们公司的第三方本地存储库中创建这些依赖项.

一旦完成,我的POM依赖现在就是

<dependency>
        <groupId>org.glassfish.appclient</groupId>
        <artifactId>gf-client</artifactId>
        <version>3.1</version>
        <type>pom</type>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.glassfish.external.jms</groupId>
        <artifactId>imqjmsra</artifactId>
        <version>3.1.0</version>
    </dependency>

我可以完全轮询我的JMS队列.

java-ee – 我可以使用哪些maven依赖项为Glassfish创建一个独立的JMS客户端?的更多相关文章

  1. 调试 – 使用带有glassfish服务器的ubuntu上的intelliJ,无法在调试模式下运行Web应用程序

    在使用glassfish3.1.2.2的ubuntu12.04上的intelliJ12.0中,我试图在调试模式下启动我的Web应用程序,但是我收到此错误消息:我尝试用另一个更改domain.xml中的端口9009但它不成功.你能帮我解决这个问题吗?

  2. Ubuntu / Java / Glassfish的奇怪文件名字符编码问题

    简单的System.out.println方法正确显示文件名,并成功将问题文件复制到另一个文件夹.这个事实让我别无选择,只能宣称Glassfish是我的班级,java和linux之间的差距.在Glassfish中是否有任何字符编码特定设置我可以纠正以修复此错误或者我可能错过了某些问题并且问题实际上并不存在?.另外,请参阅Glassfish配置,例如在sun-web.xml中你必须看到这样的东西:

  3. ubuntu – Glassfish 4服务器意外停止

    我是GlassFish的新手,也是一般的应用服务器.我有一个运行Ubuntu的AmazonEC2实例,并安装了GlassFish4.它启动时没有问题,但一段时间后,GlassFish服务器就会自行关闭.我查看了server.log,但一切看起来都很正常,并且没有条目描述任何失败或关闭.关于可能是什么原因的任何输入,或者我应该寻找任何线索的地方?服务器过去常常每天崩溃,但是交换它并没有在几周内崩溃.

  4. java – Mule:获取异常消息

    我在Mule中有一个默认的catch异常,我正在尝试使用Mule表达式访问异常消息:#[exception]这似乎不起作用,我猜我正在尝试访问错误的变量?我正在尝试使用logger记录它,并运行一个接收异常消息的自定义组件谢谢,解决方法你可以这样做#[exception.causedBy]更多细节here

  5. java-ee – Glassfish中的JNDI配置/查找

    我在Glassfish中遇到一些基本的JNDI配置时遇到了麻烦.我认为应该是一个简单的任务:在运行时,确定特定属性是否设置为true.我认为这是JNDI的一个很好的应用程序,但似乎无法在app服务器和我的servlet代码之间获得正确的路径.以下是我在Glassfish中配置属性的方法:在我的servlet代码中,我试图通过以下方式查找值:除了这条路之外,我还尝试了以下方法但没有成功:>java:

  6. java – 在GlassFish 4.1中升级Jackson

    我使用的是GlassFish4.1,其中包括Jackson2.3.2.我想升级到最新版本的Jackson(目前为2.4.4).在GlassFish4.1中升级Jackson的过程是否简单如下:a)停止GlassFishb)删除osgi-cachec)用更新的版本替换glassfish/modules目录中的Jackson2.3.2jard)启动GlassFish谢谢.解决方法请@seehttps:

  7. glassfish – Java EE7的拦截器问题

    我正在测试/切换到JavaEE7(Glassfish4),我遇到的一个问题是拦截器,每当我尝试运行项目时,我都会收到以下错误.SEVERE:Exceptionwhileloadingtheapp:CDIdeploymentfailure:WELD-001417Enabledinterceptorclasscom.xxxxxx.security.SecuredInterceptorinfile:/h

  8. java – 如何使JNDI名称与GlassFish和WildFly兼容

    我假设答案可能取决于特定于应用程序的部署描述符,但我找不到任何涵盖这两种情况的示例.有人能指出我正确的方向吗?

  9. java-ee – 处理Java EE和java.endorsed.dirs的最佳实践?

    如果我选择,在将应用程序部署到使用较新的认可库进行自举的容器时,是否需要担心不兼容问题?不是GlassFishEmbbeded附带了与JavaEE规范兼容的库吗?并不是默认加载的那些库?这几乎是您针对JavaEE6API编译项目所需的全部内容.任何符合JavaEE6的AppServer都应该提供这些服务,您不应该担心它们如何使它可供您的应用程序使用.引导JavaEE服务的责任应该是您的AppServer.如果你尝试自己的“内部”解决方案,JARHell可能会破裂.干杯,

  10. 过滤器链的GlassFish问题:java.lang.IllegalStateException:已为此响应调用了PWC3990:getWriter()

    我们需要升级老式Web应用程序以在GlassFish3而不是Tomcat下运行才能获得EAR部署(Glassfish被选中,因为它是参考JEE6实现)不幸的是,它很快证明了确保用户登录的机制不能正常工作并且抱怨已经调用了getWriter()(这很可能是正确的)并且我无法弄清楚原因.方法是我们在完整的JSP文件集上有一个过滤器,用于检查用户是否已登录,如果没有,则使用filterChain.doF

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部