【发布时间】: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