Amazon ec2 使用AmazonEC2代理在cloudBees上的JMS应用程序

Amazon ec2 使用AmazonEC2代理在cloudBees上的JMS应用程序,amazon-ec2,jms,cloudbees,java-ee-7,Amazon Ec2,Jms,Cloudbees,Java Ee 7,我有一个JavaEE7JMS应用程序,我想在CloudBees上部署它。我用cloudAMQP尝试了一个简单的应用程序,效果很好。但CloudAMQP提供托管RabbitMQ服务。我必须使用JMS客户机,因为我的代码是用JavaJMS实现的 最后一天,我在Amazon Ec2中创建了一个glassfish 4代理,我在CloudBees glassfish web profile平台中部署了一个简单的JMS应用程序,我希望它可以与我的Amazon glassfish代理一起工作。但是有一个错误

我有一个JavaEE7JMS应用程序,我想在CloudBees上部署它。我用cloudAMQP尝试了一个简单的应用程序,效果很好。但CloudAMQP提供托管RabbitMQ服务。我必须使用JMS客户机,因为我的代码是用JavaJMS实现的

最后一天,我在Amazon Ec2中创建了一个glassfish 4代理,我在CloudBees glassfish web profile平台中部署了一个简单的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 |严重| glassfish 4.0 | javax.enterprise.system.core | u ThreadID=45_ThreadName=AutoDeployer_TimeMillis=1384727649146_LevelValue=1000|

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

例外情况0:

org.jboss.weld.exceptions.DeploymentException:weld-001408未满足要求 具有限定符[@Default]的[JMSContext]类型的依赖项位于 注入点[[BackedAnnotatedField]@InjectPrivate javaeetutorial.websimplemessage.SenderBean.context]

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

Web配置文件不包含JMS,因此不支持此API和相关注释/注入。 为了实现这一点,您需要在容器中设置一个完整的概要JavaEE+适当的配置集来插入您的代理。与注释驱动集成相比,使用vanila JMS API可能更简单