EJB笔记
来源:互联网 发布:ip与域名的关系 编辑:程序博客网 时间:2024/06/03 08:09
一、EJB基础
1.概念
Enterprice JavaBean是一个用于分布式业务应用的标准服务端组件模型。采用ejb架构的应用是可伸的、事务性、多用户安全的。一般部署在jboss服务器上。
2.ejb类型
会话bean(Session Bean):
会话bean用于实现业务逻辑,它分为有状态bean和无状态bean。会话bean可以直接访问数据库,但更多时候,它是通过实体bean实现数据库访问。
实体bean(Entity Bean):
实体bean主要作为普通java对象使用,负责跟数据库表进行对象与关系映射。
消息驱动bean(MessageDrive Bean):
MDB是设计用来专门处理基于消息请求的组件。它能够收发异步JMS消息,并更够与其他JEB交互。它适用于当一个业务执行的时间很长,而执行的结果无需实时向用户反馈的场景。
二、代码实现
1.服务端
远程无状态会话bean接口
package com.ejbtest.service.bean;import java.util.List;import javax.ejb.Remote;import javax.ejb.Stateless;import javax.ejb.TransactionManagement;import javax.ejb.TransactionManagementType;import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.Persistence;import javax.persistence.Query;import com.ejbtest.service.vo.CtocOrder;//mappedName 是bean映射名称,客户端调用@Stateless(mappedName = "ejbTest_jndi")@Remote({ IEjbService.class })@TransactionManagement(TransactionManagementType.BEAN)public class EjbServiceBean implements IEjbService{ //注解获得实体管理对象 @javax.persistence.PersistenceUnit()private EntityManagerFactory emf;public EntityManager getEntityManager() {return emf.createEntityManager();} //指定数据配置单元获得实体管理对象 public EntityManager getEntityManager01() { return Persistence.createEntityManagerFactory("ejbTest-ejbPU").createEntityManager(); }@Overridepublic CtocOrder getOrderInfo(String escOrderid) {System.out.println("escOrderid="+escOrderid);EntityManager em=getEntityManager();String sql="SELECT t FROM CtocOrder t where escOrderid=:escOrderid ";Query query=em.createQuery(sql);query.setParameter("escOrderid", escOrderid);List<CtocOrder> list=query.getResultList();if(list!=null&&list.size()>0){return list.get(0);}return null;}}
实体bean
package com.ejbtest.service.vo;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Table; @Entity@Table(name = "CTOC_ORDER",schema = "POSTMALL_USER")public class CtocOrder implements java.io.Serializable {private static final long serialVersionUID = 8527656418454776528L;private String escOrderid;private String buyerName; public CtocOrder() {}@Column(name = "ESC_ORDERID", length = 20)public String getEscOrderid() {return this.escOrderid;}public void setEscOrderid(String escOrderid) {this.escOrderid = escOrderid;}@Column(name = "BUYER_NAME", length = 128)public String getBuyerName() {return this.buyerName;}public void setBuyerName(String buyerName) {this.buyerName = buyerName;}}
数据源配置persistence.xml
<?xml version="1.0" encoding="UTF-8"?><persistence version="1.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_1_0.xsd"> <persistence-unit name="ejbTest-ejbPU" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <!-- jboss 数据源配置jndi-name --> <non-jta-data-source>java:ejbTest_db</non-jta-data-source> <!-- 数据库映射实体bean --> <class>com.ejbtest.service.vo.CtocOrder</class> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties> <property name="hibernate.show_sql" value="false" /> <property name="min-pool-size" value="5" /> <property name="max-pool-size" value="20" /> <property name="idle-timeout-minutes" value="5" /> <property name="hibernate.connection.autocommit" value="false" /> <property name="hibernate.connection.SetBigStringTryClob" value="true"/> <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" /> <property name="hibernate.jdbc.batch_size" value="3"/> <property name="hibernate.max_fetch_depth" value="5"/> </properties> </persistence-unit></persistence>
注:persistence.xml位于src/META-INF下
- pom配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- The Basics --> <groupId>com.ejbtest</groupId> <artifactId>ejbTestServcie</artifactId> <version>1.0</version> <packaging>ejb</packaging> <dependencies> <dependency><groupId>javax.ejb</groupId><artifactId>ejb-api</artifactId><version>3.0</version></dependency><dependency><groupId>javax.persistence</groupId><artifactId>persistence-api</artifactId><version>1.0</version></dependency> </dependencies> <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.*</include> </includes> </resource> </resources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> <debug>true</debug> <fork>true</fork> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-eclipse-plugin</artifactId> <version>2.8</version> <configuration> <wtpversion>2.0</wtpversion> <wtpContextName>/</wtpContextName> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-ejb-plugin</artifactId> <configuration> <ejbVersion>3.0</ejbVersion> <generateClient>true</generateClient> <jarName>ejbtest-1.0</jarName> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.3</version> <executions> <execution> <id>ejbtest-util</id> <phase>package</phase> <goals> <goal>jar</goal> </goals> <configuration> <classifier>util</classifier> <jarName>ejbtest-1.0</jarName> </configuration> </execution> </executions> </plugin> </plugins> </build> <distributionManagement> <repository> <id>tom-maven-repository</id> <name>Tom Maven Repository</name> <url>xxxx</url> </repository> </distributionManagement> <repositories> <repository> <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>fail</checksumPolicy> </releases> <id>internal</id> <name>Tom Central Maven Repository</name> <layout>default</layout> <url>xxx</url> <snapshots> <updatePolicy>always</updatePolicy> <checksumPolicy>warn</checksumPolicy> </snapshots> </repository> </repositories></project>
2.客户端
package com.ejbtest.client;import java.util.Properties;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import com.ejbtest.service.bean.IEjbService;import com.ejbtest.service.vo.CtocOrder;public class Test { public static void main(String[] args) throws NamingException { Properties props = new Properties(); props.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory"); props.put("java.naming.provider.url", "127.0.0.1:1004");//ejb服务地址 props.put("java.naming.factory.url.pkgs", "org.jboss.naming"); Context ctx = new InitialContext(props); IEjbService service = (IEjbService) ctx.lookup("ejbTest_jndi");//ejb bean接口名称 CtocOrder order=service.getOrderInfo("2017052400494689"); System.out.println(order.getEscOrderid()+">>>>"+order.getBuyerName()); } }注:客户端要引用jboss client jar
阅读全文
0 0
- EJB 笔记
- EJB笔记
- EJB笔记
- EJB笔记
- 【笔记】EJb最佳实践
- EJB学习笔记
- Weblogic EJB 学习笔记
- ejb的索引笔记。
- EJB学习笔记
- EJB学习笔记
- EJB学习笔记
- EJB学习笔记(1)
- EJB学习笔记(2)
- EJB学习笔记(3)
- EJB学习笔记(4)
- EJB学习笔记--体系结构
- EJB学习笔记(JNDI)
- EJB学习笔记(RMI)
- sscanf的高级用法 正则表达式
- Reac-Native ScrollView回到顶部
- Linux下安装Tomcat服务器和部署Web应用
- 怎么理解 Condition
- spyder绘制loss曲线
- EJB笔记
- python、pip、whl安装和使用
- 实时屏幕提取转Mat
- 类似京东筛选 点击小按钮打对勾,没有点击取消
- jdk-LinkedBlockingQueue
- mybatis 源码 -- sql查询映射
- PCA
- vfs中的dentry、inode、super_block概念
- Intent 的使用