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