- 浏览: 1590470 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
//-------------- 实体bean 的开发
////------配置 jboss 的数据源
--给出一个 oralce的配置 oracle-ds.xml
添加JPA的持久化配置文件 persistence.xml 类是 hibernate
jndi.properties
---编写 实体bean
采用注解 配置 ORM 映射关系
BiAnswer.java
BiAnswerService.java
BiAnswerServiceBean.java
BiAnswerServiceTest.java
--使用 Ant 进行编译
build.xml
1:实体bean 属于Java持久化规范 (简称JPA)里的技术,实体bean通过元数据在javabean和数据库表之间建立映射关系,然后java程序员就可以随性所欲 使用面向对象的编程思想来操作数据了. 2:JPA的出现主要是为了简化现有的持久化开发工作和整合ORM技术. 3:目前实现了JPA规范过的主流产品有Hibernate TopLink OpenJPA ibatis mybatis . 4:在 jboss中采用HIbernate 最为其持久化实现产品.
////------配置 jboss 的数据源
1.数据库连接对象的创建是很耗性能的,配置数据源后可以提升性能.. jboss5.0 和 jboss 6.0 一样 EBJ 提供了模版啦!! E:\jboss-5.0.0.GA\docs\examples\jca 里面就可以看到很多数据的配置模版 比如mysql 的配置模版 mysql-ds.xml 然后修改 比如 <jndi-name>MySqlDS</jndi-name> <connection-url>jdbc:mysql://mysql-hostname:3306/jbossdb</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>x</user-name> <password>y</password> 第一个:修改 jndi名称 第二个Ip地址: localhost:3306 第三个数据名称: jbossdb---> spdb1 (创建数据库的时候一般使用 UTF-8编码) 第四个用户名:x--->root 第五个密码y:123456 注意: 数据源的文件的取名:必须要以 -ds 结尾 发布之前 还要注意 "数据库的驱动类" 复制到 E:\jboss-5.0.0.GA\server\default\lib 完成后 将修改好的 mysql-ds.xml 拷贝到 E:\jboss-5.0.0.GA\server\default\deploy 此时就会看到 数据源的jndi名称为: java:MySqlDS 到jboss控制后台 查看 数据源 http://localhost:8080/jmx-console/ --->jboss.jca---name:java:MySqlDS; 然后要注意的一个 就是 查看数据源一些属性的配置 查看 连接池的 属性 点击进去 name=JbossOracleDS,service=ManagedConnectionPool MaxSize :最大可以数量 默认 20 条 InUseConnectionCount :正在使用的连接统计. MinSize :最小的连接数量 BlockingTimeoutMillis:最大等待时间 30秒 修改后 点击 Apply Changes 只用在jboss 运行时候就生效 关闭 就会丢失修改后的值 要永久的修改 就要修改数据源文件 mysql-ds.xml 添加参数 <min-pool-size>1</min-pool-size> <min-pool-size>50</min-pool-size> 注意 正在使用人数 和 数据源的最大连接数 如果数量 一直是满的 就要考虑 是否扩大连接数了
--给出一个 oralce的配置 oracle-ds.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- ===================================================================== --> <!-- --> <!-- JBoss Server Configuration --> <!-- --> <!-- ===================================================================== --> <!-- $Id: oracle-ds.xml 23720 2004-09-15 14:37:40Z loubyansky $ --> <!-- ==================================================================== --> <!-- Datasource config for Oracle originally from Steven Coy --> <!-- ==================================================================== --> <datasources> <local-tx-datasource> <jndi-name>JbossOracleDS</jndi-name> <connection-url>jdbc:oracle:thin:@192.168.1.242:1521:ora11g</connection-url> <!-- Here are a couple of the possible OCI configurations. For more information, see http://otn.oracle.com/docs/products/oracle9i/doc_library/release2/java.920/a96654/toc.htm <connection-url>jdbc:oracle:oci:@youroracle-tns-name</connection-url> or <connection-url>jdbc:oracle:oci:@(description=(address=(host=youroraclehost)(protocol=tcp)(port=1521))(connect_data=(SERVICE_NAME=yourservicename)))</connection-url> Clearly, its better to have TNS set up properly. --> <driver-class>oracle.jdbc.driver.OracleDriver</driver-class> <user-name>bjdata</user-name> <password>bjdata</password> <!-- Uses the pingDatabase method to check a connection is still valid before handing it out from the pool --> <!--valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name--> <!-- Checks the Oracle error codes and messages for fatal errors --> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name> <!-- sql to call when connection is created <new-connection-sql>some arbitrary sql</new-connection-sql> --> <!-- sql to call on an existing pooled connection when it is obtained from pool - the OracleValidConnectionChecker is prefered <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql> --> <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) --> <metadata> <type-mapping>Oracle10g</type-mapping> </metadata> </local-tx-datasource> </datasources>
添加JPA的持久化配置文件 persistence.xml 类是 hibernate
<!--根据JPA的规范的要求,在实体bean的应用中,我们需要在应用的类路径下的META-INF目录加入持久化配置文件 persistence.xml--> <?xml version="1.0" encoding="UTF-8"?> <persistence 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" version="1.0"> <!-- 持久化单元 (可以配置多个) JTA: 全局事物 ejb默认的事务类型 可以不用设置 RESOURCE_LOCAL:本地事务 添加数据源 :提高性能 --> <persistence-unit name="mytest" transaction-type="JTA" > <!-- 配置的jboss 数据源jndi名称 --> <jta-data-source>java:JbossOracleDS</jta-data-source> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/> <!-- 自动生存表接口 create-drop:启动创建表,程序 卸载的时候会删除表结构 测试的有用 create:启动创建, 卸载的时候不会删除 update:保留数据库的数据,如果添加新的字段后,会同步到数据库中. <property name="hibernate.hbm2ddl.auto" value="create-drop"/> --> <!-- 打印 sql语句 --> <property name="hibernate.show_sql" value="true"/> <!--格式化sql语句 --> <property name="hibernate.format_sql" value="true"/> </properties> </persistence-unit> </persistence>
jndi.properties
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.provider.url=localhost:1099
---编写 实体bean
采用注解 配置 ORM 映射关系
BiAnswer.java
package com.sh.ejb3.bean; import java.io.Serializable; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity //@Entity(name="xxx") 可以修改 @Table(name="bi_answer") public class BiAnswer implements Serializable{ private static final long serialVersionUID = 5687494436224059560L; private Integer id; @Column(name="answer",length=300,nullable=true) private String answer; private String correct; private Integer sortid; private Integer qid; private Date createtime; public BiAnswer() { } public BiAnswer(Integer id,String answer,Integer qid) { this.id=id; this.answer=answer; this.qid=qid; } @Id @Column(name="id") //这些注解 只能标注在 get() 方法上 不能在set 上 还可以标注 字段上 public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getAnswer() { return answer; } public void setAnswer(String answer) { this.answer = answer; } @Column(name="correct",length=1,nullable=true) public String getCorrect() { return correct; } public void setCorrect(String correct) { this.correct = correct; } @Column(name="sortid",length=10,nullable=true) public Integer getSortid() { return sortid; } public void setSortid(Integer sortid) { this.sortid = sortid; } @Column(name="qid",length=10,nullable=true) public Integer getQid() { return qid; } public void setQid(Integer qid) { this.qid = qid; } @Column(name="createtime",nullable=true) public Date getCreatetime() { return createtime; } public void setCreatetime(Date createtime) { this.createtime = createtime; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; BiAnswer other = (BiAnswer) obj; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; return true; } }
BiAnswerService.java
package com.sh.ejb3.service; import java.util.List; import com.sh.ejb3.bean.BiAnswer; public interface BiAnswerService { public void save (BiAnswer answer); public void update(BiAnswer answer); public void delete(Integer answerid); public BiAnswer getAnswer(Integer answerid); public List<BiAnswer> getAnswers(); }
BiAnswerServiceBean.java
package com.sh.ejb3.service.impl; import java.util.List; import javax.ejb.Remote; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContextType; import com.sh.ejb3.bean.BiAnswer; import com.sh.ejb3.service.BiAnswerService; @Stateless @Remote(BiAnswerService.class) public class BiAnswerServiceBean implements BiAnswerService { //使用实体管理器 如果只有一个 持久化单元 unitName可以不用配置 否则有多个的话 就需要配置 @PersistenceContext(unitName="mytest") EntityManager em; @Override public void save(BiAnswer answer) { // TODO Auto-generated method stub em.persist(answer); //只将持久化字段保存到数据库中对应的字段 } @Override public void update(BiAnswer answer) { // TODO Auto-generated method stub em.merge(answer); //answer 为 游离状态 而且 进行了修改 使用 merge } @Override public void delete(Integer answerid) { // TODO Auto-generated method stub //getReference 返回的是一个 代理对象 一般都是 懒加载 和 Hibernate中 一样 em.remove(em.getReference(BiAnswer.class, answerid)); //处于托管状态 } @Override public BiAnswer getAnswer(Integer answerid) { // TODO Auto-generated method stub return em.find(BiAnswer.class, answerid); //如果没有找到就返回一个null } @SuppressWarnings("unchecked") //终止警告 @Override public List<BiAnswer> getAnswers() { // TODO Auto-generated method stub //注意 采用的 HQL 语句 注意 BiAnswer 的类的简单名称 可以通过 @Entity(name="xxx") 修改 return em.createQuery("SELECT o from BiAnswer o").getResultList(); } }
BiAnswerServiceTest.java
package junit.test; import static org.junit.Assert.fail; import java.util.List; import javax.naming.InitialContext; import org.junit.BeforeClass; import org.junit.Test; import com.sh.ejb3.bean.BiAnswer; import com.sh.ejb3.service.BiAnswerService; public class BiAnswerServiceTest { private static BiAnswerService answerService; @BeforeClass public static void setUpBeforeClass() throws Exception { try { //不采用硬编码 就可以直接 添加 一个jndi.properties 会自动从java类路径中 去寻找 服务器的配置文件 InitialContext ctx=new InitialContext();//InitialContext(props); answerService=(BiAnswerService)ctx.lookup("BiAnswerServiceBean/remote"); //测试 远程接口 } catch (Exception e) { e.printStackTrace(); } } @Test public void testSave() { answerService.save(new BiAnswer(1050,"5等南瓜多少分?",1040)); } @Test public void testUpdate() { BiAnswer answer=answerService.getAnswer(1048); answer.setAnswer("家园被污染了!!呜呜"); answerService.update(answer); } }
--使用 Ant 进行编译
build.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- ====================================================================== 2013-2-25 下午1:53:33 project description Bin ====================================================================== --> <project name="EntityBean" basedir="."> <description> description </description> <!-- 设置项目原目录 --> <property name="src.dir" value="${basedir}\src" /> <!-- 获取环境变量 --> <property environment="env"/> <property name="jboss.home" value="${env.JBOSS_HOME}"/> <property name="jboss.server.config" value="default"/> <property name="build.dir" value="${basedir}\build"/> <!-- 引入 jboss client 下的 所有jar --> <path id="build.classpath"> <fileset dir="${jboss.home}\client"> <include name="*.jar"/> </fileset> <!-- 讲编译过后的路径加入到 path中去 方便 接口和实现的引用 --> <pathelement location="${build.dir}"/> </path> <target name="prepare" description="创建build目录"> <delete dir="${build.dir}"/> <mkdir dir="${build.dir}"/> </target> <!-- - - - - - - - - - - - - - - - - - target: compile - - - - - - - - - - - - - - - - - --> <target name="compile" depends="prepare" description="编译"> <javac srcdir="${src.dir}" destdir="${build.dir}" includeantruntime="false" includes="com/**"> <classpath refid="build.classpath"/> </javac> </target> <!-- ================================= target: ejbjar ================================= --> <target name="ejbjar" depends="compile" description="创建EJB发布包"> <jar jarfile="${basedir}\${ant.project.name}.jar"> <fileset dir="${build.dir}"> <include name="**/*.class"/> </fileset> <!-- 将原目录下META-INF下的所有文件都打包到 jar文件的META-INF下--> <metainf dir="${src.dir}\META-INF"></metainf> </jar> </target> <!-- ================================= target: deploy ================================= --> <target name="deploy" depends="ejbjar" description="发布EJB"> <copy file="${basedir}\${ant.project.name}.jar" todir="${jboss.home}\server\${jboss.server.config}\deploy"/> </target> <!-- - - - - - - - - - - - - - - - - - target: undeploy - - - - - - - - - - - - - - - - - --> <target name="undeploy" description="卸载EJB"> <delete file="${jboss.home}\server\${jboss.server.config}\deploy\${ant.project.name}.jar"/> </target> </project>
发表评论
-
EJB容器模型的WebService服务
2013-02-28 22:52 1656---WEB服务 WEB服务市一种分布式技术,它与EJB最 ... -
WebService 之 EJB容器模型
2013-02-27 23:24 6---WEB服务 WEB服务市一种分布式技术,它与EJB最 ... -
EJB 消息驱动bean 的开发
2013-02-27 21:19 1858//-----------------------JMS ... -
EJB 会话bean and Jboss JNDI
2013-02-25 23:53 2362下面案例使用的环境 myeclipse.10.1 j ... -
tomcat,jboss,jetty,weblogic 编码设置
2012-09-07 01:48 1912tomcat //在server.xml中 <Co ...
相关推荐
本教程“09_传智播客EJB3.0_配置jboss数据源”主要关注如何在JBoss应用服务器中配置数据源,这对于任何处理数据库交互的EJB应用来说都是至关重要的。 首先,让我们深入理解EJB 3.0的关键特性: 1. 注解驱动:EJB ...
为了实现EntityBean与Oracle数据库之间的连接,首先需要配置一个数据源。数据源的具体配置步骤如下: 1. **拷贝配置文件**: 将位于`jboss-4.2.2.GA\docs\examples\jca\oracle-ds.xml`的数据源配置文件`oracle-ds....
对于JBoss,需要填写的参数包括版本号、数据源名称和数据源映射名称,这些信息通常可以在服务器的配置文件中找到。 **Xdoclet的益处** 使用Xdoclet的主要优点是提高了开发效率,减少了手动编写重复代码的时间,同时...
7. JPA和数据源配置 8. 部署与管理 以上就是在JBoss下开发EJB应用,特别是实体Bean应用的基本流程和关键知识点。通过这个过程,开发者可以更好地理解和掌握Java EE中的持久化技术和企业级服务的实现。
通过对 “Entity_Bean” 的深入了解,我们可以看到实体Bean 是一种强大的数据持久化机制,它利用 `persistence.xml` 配置文件和实体类来实现与数据库的交互。通过上述分析,我们了解了如何配置数据源、定义实体类、...
2. 数据源配置:如果EJB需要数据库连接,需要在JBOSS_HOME/server/default/conf/jboss-service.xml中配置数据源。 3. JNDI查找:EJB可以通过JNDI(Java Naming and Directory Interface)名字被客户端查找和调用,需...
- **配置数据源**:通过配置文件或使用JDBC资源适配器来连接多种数据库。 - **MySQL配置**:特别提到如何配置MySQL作为默认数据源。 以上是基于“jboss4开发指南”的主要知识点概览。这份文档不仅涵盖了JBoss4.0.x...
在实验中,你可能还会学习到EJB的接口定义、实体Bean(Entity Bean,用于持久化数据)、消息驱动Bean(Message-Driven Bean,用于处理消息队列)以及EJB的生命周期管理。此外,理解EJB容器如何处理事务、安全性、...
4. JBoss 数据源的配置 5. JMS使用和设置 5.1 JMS消息的传递模型 5.2 JMS的配置 三.JMX原理和应用 1. 什么是JMX 2. JMX规范 3. 基于JBoss来写MBean 3.1 HelloWorld实例 3.2 程序代码 3.3 配置文件jboss-service.xml...
- `EntityBean` 可能包含实体Bean的源代码。 - `MessageDrivenBean` 可能包含消息驱动Bean的实现。 - `EJBClient` 可能包含了访问EJB的客户端代码。 - `MyApplication` 可能是整个EJB应用的主目录,包含了所有组件和...
2. **配置数据源**:在JBoss服务器中设置数据源的连接信息。 3. **定义实体Bean**:使用Java注解来定义实体Bean及其与数据库表之间的映射关系。 4. **实现DAO层**:定义DAO接口并实现相应的数据库操作逻辑。 通过...
- 配置 JNDI 数据源(例如 `java:/MSSQLDS`),确保与数据连接池配置中的 JNDI 名称一致。 2. **生成实体 Bean** - 使用 MyEclipse 自动生成实体 Bean 类,这通常涉及到根据数据库表结构自动生成对应的 Java 类...
6. **配置JBoss**:根据应用需求,可能需要修改JBoss的配置文件,如server.xml或jboss-service.xml,以配置数据源、JMS队列、安全性等。 7. **测试和运行**:一旦部署完成,你可以通过JBoss的管理控制台或者编写...
通过本教程的学习,您不仅掌握了使用Myeclipse 6和JBoss来开发EJB3应用程序的基础知识,还学会了如何配置环境变量、创建项目、配置数据源以及进行简单的测试。这对于初学者来说是一个很好的起点,有助于进一步深入...
在JBoss中,实体Bean通常用于存储和检索业务数据。它们有三个主要的组成部分:Bean类、接口和部署描述符。Bean类实现了业务逻辑,接口定义了客户端可以调用的方法,而部署描述符(ejb-jar.xml)则包含了关于Bean的...
在EJB3.0中,`persistence.xml`文件扮演着核心角色,它定义了持久性单元(persistence unit),其中包含了与数据库交互的配置信息,如数据源、映射文件位置以及Hibernate等持久层框架的具体配置参数。 #### 6. **...
**6.2 JBoss数据源的配置** - 数据源配置对于实体Bean至关重要。 - 包括数据库连接池的配置、连接URL、用户名密码等。 **6.2.1 MySql数据源的配置** - 配置MySql数据库的数据源。 - 设置连接驱动、连接URL、用户名...
《JBoss 3.2 Workbook for Enterprise JavaBeans™, 3rd Edition》是一本专门针对JBoss 3.2版本的EJB配置与部署的教程书籍,由Bill Burke和Sacha Labourey共同编写,出版于2003年。本书作为Richard Monson-Haefel所...