【问题标题】:JMS application on cloudBees with Amazon EC2 broker使用 Amazon EC2 代理的 cloudBees 上的 JMS 应用程序
【发布时间】:2013-11-19 16:26:55
【问题描述】:

我有一个 Java ee 7 JMS 应用程序,我想将它部署在 CloudBees 上。我尝试了一个带有 cloudAMQP 的简单应用程序,它可以工作。但 CloudAMQP 提供托管的 RabbitMQ 服务。我必须使用 JMS 客户端,因为我的代码是在 java JMS 中实现的。

最后一天,我在 Amazon Ec2 中创建了 glassfish 4 代理,我在 CloudBees glassfish web 配置文件平台中部署了一个简单的 JMS 应用程序,我希望它可以与我的 Amazon glassfish 代理一起使用。但是有一个错误。

我的代码是:

@JMSConnectionFactoryDefinition(
    name="java:comp/jms/__defaultConnectionFactory",
    maxPoolSize = 30,
    minPoolSize= 20,
    properties = {
        "addressList=mq://ec2-54-194-27-99.eu-west-1.compute.amazonaws.com:7676",
        "reconnectEnabled=true"
    }
) 

@JMSDestinationDefinition(
    name = "java:comp/jms/webappQueue",
    interfaceName = "javax.jms.Queue",
    destinationName = "PhysicalWebappQueue")

    @Named
    @RequestScoped
    public class ReceiverBean {

        static final Logger logger = Logger.getLogger("ReceiverBean");
        @Inject
        private JMSContext context;
        @Resource(lookup = "java:comp/jms/webappQueue")
        private Queue queue;
       .....

    public void getMessage() {
            try {
                JMSConsumer receiver = context.createConsumer(queue);
                String text = receiver.receiveBody(String.class, 1000);

                if (text != null) {
                    FacesMessage facesMessage =
                            new FacesMessage("Reading message: " + text);
                    FacesContext.getCurrentInstance().addMessage(null, facesMessage);
                } else {
                    FacesMessage facesMessage =
                            new FacesMessage("No message received after 1 second");
                    FacesContext.getCurrentInstance().addMessage(null, facesMessage);
                }
            } catch (JMSRuntimeException t) {
                logger.log(Level.SEVERE,
                        "ReceiverBean.getMessage: Exception: {0}",
                        t.toString());
            }
        }

错误是

|2013-11-17T22:34:09.146+0000|SEVERE|glassfish 4.0|javax.enterprise.system.core|_ThreadID=45;_ThreadName=AutoDeployer;_TimeMillis=1384727649146;_LevelValue=1000;|

加载应用程序时出现异常:CDI 部署失败:异常 列出 2 个例外:

例外 0:

org.jboss.weld.exceptions.DeploymentException: WELD-001408 不满意 带有限定符 [@Default] 的类型 [JMSContext] 的依赖项 注入点 [[BackedAnnotatedField] @Inject private javaeetutorial.websimplemessage.SenderBean.context]

你能对我的案子有什么想法吗? 提前致谢。

【问题讨论】:

    标签: amazon-ec2 jms cloudbees java-ee-7


    【解决方案1】:

    Web 配置文件不包含 JMS,因此不支持此 API 和相关的注解/注入。 为此,您需要在容器中设置完整的 JavaEE + 足够的配置来插入您的代理。使用 vanila JMS API 与注释驱动的集成可能更简单

    【讨论】:

      猜你喜欢
      • 2013-05-08
      • 2015-11-14
      • 1970-01-01
      • 2010-12-08
      • 1970-01-01
      • 2014-09-13
      • 2014-12-13
      • 2011-06-17
      • 1970-01-01
      相关资源
      最近更新 更多