GlassFish是一个开源的应用服务器,主要用于部署和运行Java EE(现在称为Jakarta EE)应用程序。它实现了Java EE规范,提供了诸如EJB(Enterprise JavaBeans)、JPA(Java Persistence API)、JMS(Java Message Service)等企业级功能。
Ubuntu是一个基于Debian的开源操作系统,广泛用于服务器和个人计算机。它提供了强大的命令行工具和丰富的软件包管理器(如apt),使得安装和管理软件变得非常方便。
消息传递(Message Passing)是一种通信机制,允许不同的应用程序或系统组件之间通过发送和接收消息来进行通信。这种通信方式可以是同步的(发送方等待接收方响应)或异步的(发送方不等待响应)。
消息传递主要有以下几种类型:
原因:
解决方法:
glassfish/domains/domain1/config/domain.xml
文件,确保配置正确。netstat -an | grep <端口号>
检查端口是否被占用,如果被占用,修改GlassFish的监听端口。apt-get install <依赖库名称>
安装缺失的库。原因:
解决方法:
以下是一个简单的Java EE JMS示例,展示如何在GlassFish中使用JMS进行消息传递:
import javax.annotation.Resource;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import javax.naming.InitialContext;
import javax.naming.NamingException;
@MessageDriven(
activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "java:/jms/queue/MyQueue")
}
)
public class MyMessageDrivenBean implements MessageListener {
@Override
public void onMessage(Message message) {
try {
if (message instanceof TextMessage) {
String text = ((TextMessage) message).getText();
System.out.println("Received message: " + text);
}
} catch (JMSException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
InitialContext ctx = new InitialContext();
ctx.createProducer().send(ctx.lookup("java:/jms/queue/MyQueue"), ctx.createTextMessage("Hello, JMS!"));
} catch (NamingException | JMSException e) {
e.printStackTrace();
}
}
}
领取专属 10元无门槛券
手把手带您无忧上云