1. 基于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());
}
  1. 基于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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录