请分别给一个基于weblogic的EJB、JMS的开发实例
- 基于Weblogic的EJB开发实例:
假设我们需要开发一个简单的银行账户管理系统,其中需要实现对账户进行增删改查的操作。我们可以使用Weblogic作为应用服务器,使用EJB技术实现该系统。
首先,我们需要创建一个EJB项目,并定义一个Account接口和一个AccountBean实现类:
Account.java:
package com.example.bank;
import java.util.List;
public interface Account {
public void createAccount(String name, double balance);
public void deleteAccount(int id);
public void updateAccount(int id, String name, double balance);
public List<AccountEntity> getAccounts();
}
AccountBean.java:
package com.example.bank;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
@Stateless
public class AccountBean implements Account {
@PersistenceContext(unitName="bankPU")
private EntityManager em;
public void createAccount(String name, double balance) {
AccountEntity account = new AccountEntity(name, balance);
em.persist(account);
}
public void deleteAccount(int id) {
AccountEntity account = em.find(AccountEntity.class, id);
em.remove(account);
}
public void updateAccount(int id, String name, double balance) {
AccountEntity account = em.find(AccountEntity.class, id);
account.setName(name);
account.setBalance(balance);
em.merge(account);
}
public List<AccountEntity> getAccounts() {
Query query = em.createQuery("SELECT a FROM AccountEntity a");
return query.getResultList();
}
}
其中,AccountEntity是一个JPA实体类,用于映射数据库中的账户表。
接下来,我们需要在Weblogic中配置数据源和JPA实体管理器。在Weblogic控制台中,选择“Services” -> “Data Sources”,创建一个新的数据源,并在“JDBC”标签页中配置数据库连接信息。然后,在“JDBC Connection Pool”标签页中设置最小和最大连接数等参数。最后,在“Target”标签页中选择要部署该数据源的服务器。
然后,在EJB项目的META-INF目录下创建一个名为“persistence.xml”的文件,用于配置JPA实体管理器。其中,我们需要指定数据源的JNDI名称:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="bankPU" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/bankDS</jta-data-source>
<class>com.example.bank.AccountEntity</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="eclipselink.logging.level" value="FINE"/>
</properties>
</persistence-unit>
</persistence>
最后,我们可以在客户端代码中通过JNDI查找AccountBean的实例,并调用其方法:
Properties props = new Properties();
props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
props.setProperty(Context.PROVIDER_URL, "t3://localhost:7001");
InitialContext context = new InitialContext(props);
Account account = (Account) context.lookup("bank/AccountBean#com.example.bank.Account");
account.createAccount("Alice", 1000.0);
account.createAccount("Bob", 2000.0);
account.updateAccount(1, "Charlie", 1500.0);
account.deleteAccount(2);
List<AccountEntity> accounts = account.getAccounts();
for (AccountEntity account : accounts) {
System.out.println(account.getId() + ": " + account.getName() + " - " + account.getBalance());
}
- 基于Weblogic的JMS开发实例:
假设我们需要开发一个简单的消息队列系统,其中需要实现生产者向队列发送消息,消费者从队列接收消息的功能。我们可以使用Weblogic作为消息中间件,使用JMS技术实现该系统。
首先,我们需要在Weblogic中创建一个JMS队列。在Weblogic控制台中,选择“Services” -> “Messaging” -> “JMS Modules”,创建一个新的JMS模块,并在其中创建一个新的JMS队列。然后,在队列的“Targeting”标签页中选择要部署该队列的服务器。
接下来,我们需要创建一个JMS生产者和一个JMS消费者。在Eclipse中创建一个Java项目,添加Weblogic的JMS客户端库,并编写以下代码:
Producer.java:
package com.example.queue;
import java.util.Properties;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class Producer {
public static void main(String[] args) throws NamingException, JMSException {
Properties props = new Properties();
props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
props.setProperty(Context.PROVIDER_URL, "t3://localhost:7001");
InitialContext context = new InitialContext(props);
ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup("jms/ConnectionFactory");
Queue queue = (Queue) context.lookup("jms/Queue");
Connection connection = connectionFactory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer producer = session.createProducer(queue);
TextMessage message1 = session.createTextMessage("Hello, World!");
TextMessage message2 = session.createTextMessage("Goodbye, World!");
producer.send(message1);
producer.send(message2);
connection.close();
}
}
Consumer.java:
package com.example.queue;
import java.util.Properties;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class Consumer {
public static void main(String[] args) throws NamingException, JMSException {
Properties props = new Properties();
props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
props.setProperty(Context.PROVIDER_URL, "t3://localhost:7001");
InitialContext context = new InitialContext(props);
ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup("jms/ConnectionFactory");
Queue queue = (Queue) context.lookup("jms/Queue");
Connection connection = connectionFactory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageConsumer consumer = session.createConsumer(queue);
connection.start();
while (true) {
Message message = consumer.receive();
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
System.out.println("Received message: " + textMessage.getText());
}
}
}
}
其中,我们需要在Weblogic控制台中创建一个名为“jms/ConnectionFactory”的JMS连接工厂,并配置连接工厂的JNDI名称。然后,在JMS客户端代码中通过JNDI查找连接工厂和队列的实例,并创建会话、生产者或消费者。最后,我们可以在生产者中发送消息,在消费者中接收消息。
运行生产者和消费者代码后,我们可以在Weblogic控制台的“Messaging” -> “JMS Modules” -> “JMS Queues” -> “Queue Details”中查看队列的消息数量
原文地址: https://www.cveoy.top/t/topic/c8v8 著作权归作者所有。请勿转载和采集!