JAVA教程之开辟基于JBoss的J2EE使用仓酷云
因为能用到多少功能就用多少,不能用就不用!总的来说:要简单要性能好,可以不用框架。你说java复杂,就是因为你把java(j2ee)与这些框架混在了一起。JBoss,作为J2EE使用服务器,以其EJB容器出色的功能、手艺的潮水性、开辟部署J2EE使用的便利性博得了良多J2EE开辟者的信任。个中,免安装、基于JMX构架、热部署(HotDeploy)、疾速开辟EJB使用等几项特性与其他商用服务器比拟,显得有些得意洋洋的模样。只管其自己没有严重的缺点,但究竟是OpenSource的开辟形式,文档很少,因而要很好的把握、精晓开辟基于JBoss的使用仍是显得有些力所能及。本文分离本人的开辟履历,给出在JBoss3.2.1下开辟J2EE一些相干的注重事项和划定规矩。个中,读者必定要晓得JBoss3.2.1作为JBoss的过渡产物(与JBoss3.0.x、JBoss4.x比拟),天然有些工具和JBoss3.0.x、JBoss4.x有很年夜不同。可是,一样平常情形下,本文先容的内容,大致上都合适JBoss各个版本。下载完JBoss3.2.1后,解压到一个没有空格的目次路径上面就能够运转JBoss,以是很便利,但条件是方针呆板安装了Java2StandardEdition。统统停当后,入手下手我们的路程。(假定JBoss3.2.1安装在:C:jboss-3.2.1_tomcat-4.1.24,本利用default设置)一,相干设置文件的设置为开辟J2EE使用,操纵数据库成了必不成少的内容;调治日记输入的具体水平成了调试J2EE使用的关头;EJB使用的调优历程是J2EE使用的中心。等等,这些内容都是我们必要晓得的。(1)数据源的设置:在JBoss3.2.1中,设置数据源的步骤很复杂,JBoss3.2.1自己带了支流数据库的设置实例,于目次下:C:jboss-3.2.1_tomcat-4.1.24docsexamplesjca。详细利用谁人设置文件取决于方针用户的数据库。假如是SQLServer2000,则必要利用mssql-ds.xml文件(撑持当地事件)大概mssql-xa-ds.xml文件(撑持全局事件);假如是Oracle9i数据库,则必要利用oracle-ds.xml文件大概oracle-xa-ds.xml文件。等等。这里以SQLServer2000为例。起首将mssql-ds.xml文件拷贝到目次:C:jboss-3.2.1_tomcat-4.1.24serverdefaultdeploy下。然后翻开文件,并作以下修正: <datasources><local-tx-datasource>
<jndi-name>VSSDB</jndi-name>
<connection-url>jdbc:microsoft:sqlserver://125.16.45.158:1433;DatabaseName=DDD</connection-url>
<driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class>
<user-name>sa</user-name>
<password>sa</password>
<min-pool-size>50</min-pool-size>
<max-pool-size>200</max-pool-size>
</local-tx-datasource>
</datasources>假如方针J2EE使用只必要当地事件,则上述历程已完成了Datasource的设置,同时这个设置将用于JDBC和EJB经由过程JNDI利用。假如要完成EJB利用Datasource,则还必要修正位于目次:C:jboss-3.2.1_tomcat-4.1.24serverdefaultconf下的standardjbosscmp-jdbc.xml文件。好比,<jbosscmp-jdbc><defaults>
<datasource>java:/VSSDB1</datasource>
<datasource-mapping>MSSQLSERVER2000</datasource-mapping>
<create-table>true</create-table>
<remove-table>false</remove-table>
<read-only>false</read-only>
<time-out>300</time-out>
<pk-constraint>true</pk-constraint>
<fk-constraint>false</fk-constraint>
。。。。。。。。个中,<datasource>java:/VSSDB</datasource>中的VSSDB就是mssql-ds.xml设置的数据源;而“java:/”前缀标明该定名空间只是对JBoss自己可见,即运转于JBoss外的使用是不克不及够利用这里界说的数据源,这一点但愿读者注重。其次,<datasource-mapping>MSSQLSERVER2000</datasource-mapping>中的MSSQLSERVER2000能够在该文件的其他中央找到。(假如是其他数据库,情形都是相似的,但愿读者加以思索!)(2)日记的输入具体水平设置:
因为JBoss3.2.1开辟接纳了Log4j办理其日记信息(严厉地讲,它扩大了Log4j),因而懂得Log4j的机理,有助于了解JBoss3.2.1办理日记的体例。JBoss3.2.1接纳JMX架构的同时,且以.xml文件范例为设置文件,因而能够找到位于目次:C:jboss-3.2.1_tomcat-4.1.24serverdefaultconf下的log4j.xml文件。好比,个中一段设置示比方下: <appendername="CONSOLE"class="org.apache.log4j.ConsoleAppender">
<paramname="Target"value="System.out"/>
<paramname="Threshold"value="INFO"/>
<layoutclass="org.apache.log4j.PatternLayout">
<!--Thedefaultpattern:DatePriorityMessage-->
<paramname="ConversionPattern"value="%d{ABSOLUTE}%-5p[%c{1}]%m%n"/>
</layout>
</appender>好比,为了调治JBoss3.2.1把持台日记输入的具体水平(调剂为DEBUG级别),我们必要修正value=”INFO”,将INFO改成DEBUG。假如方针读者在开辟EntityBeans,能够调治位于与log4j.xml文件统一目次下的standardjboss.xml文件(该文件次要是供应修正EJB相干的调试、运转、调优、部署参数)。假如方针读者EntityBeans接纳的<container-name>为StandardCMP2.xEntityBean,则将个中的<call-logging>属性的取值改成true。 <container-configuration>
<container-name>StandardCMP2.xEntityBean</container-name>
<call-logging>false</call-logging>
<invoker-proxy-binding-name>entity-rmi-invoker</invoker-proxy-binding-name>
<sync-on-commit-only>false</sync-on-commit-only>
。。。。。。。。。完成上述两步后,读者在调试EntityBeans时经由过程把持台,能够看到EntityBeans收回的JDBC挪用细节。(3)Tomcat容器相干参数的设置:假如方针读者利用JBoss3.2.1与Tomcat4.1.24的集成版本,则能够经由过程调治分离位于目次:C:jboss-3.2.1_tomcat-4.1.24serverdefaultdeployjbossweb-tomcat.sar下的web.xml和目次:C:jboss-3.2.1_tomcat-4.1.24serverdefaultdeployjbossweb-tomcat.sarMETA-INF下的jboss-service.xml文件来到达方针读者特定需求。好比,假如想将HTTP服务端口改成80,则能够修正jboss-service.xml文件;假如想使方针J2EE使用处置更多的文件范例,能够修正web.xml文件。 (4)相干类库的安排:假如您的使用触及到第三方类库,好比JDBCDriver,则能够将这些JDBCDriver寄存到目次下:C:jboss-3.2.1_tomcat-4.1.24serverdefaultlib。注重,不是目次:C:jboss-3.2.1_tomcat-4.1.24lib下。假如是与方针J2EE使用相干,则能够寄存到方针.war(大概.ear)内里,大概xxx.war目次中的WEB-INFOlib下。不管那种情况,都必要遵守J2EE标准。固然,JBoss3.2.1的设置文件有良多,好比供应邮件服务的mail-service.xml文件,等等。在这里只是给读者一些信息,假如您有相干成绩,都能够试着本文先容的一些内容办理您的成绩。感谢。二,开辟EJB使用假如开辟EJB使用,倡议接纳JBoss作为开辟服务器,由于开辟、调试、部署速率快。假如接纳其他商用服务器,因为完成机理的分歧,其编译的速率很慢。假如接纳EntityBeans手艺,则您必要晓得这么几点。第一,您方针体系的数据源有几个操纵出口,便是否存在EntityBeans以外的体例来操纵数据库。假如有,则必要调治响应<container-name>的<commit-option>提交战略和<locking-policy>战略。好比,JBoss3.2.1接纳的<commit-option>体例有4种:A、B、C、D。固然,假如除EntityBeans会见数据库外,别无它出,接纳A是很明智的。假如有,则必要取决于详细的情形利用<commit-option>体例。同时,<commit-option>体例的选择与<locking-policy>战略有干系。可以接纳<read-only>的EntityBeans或EntityBeansMethods,则只管接纳,如许会削减或打消逝世锁产生的大概性。只管接纳1:n的干系来操纵n方的数据表布局,如许可以进步EJBContainer的效力。个中,本文重点给出EJB事件处置方面的切磋。一样平常情形下,J2EE使用服务器撑持JDBC事件、JTA事件、容器办理事件。同时,最好不要在程序中同时利用上述三种事件范例,好比在JTA事件中嵌套JDBC事件;第二方面,事件要在尽量短的工夫内完成,不要在分歧办法中完成事件的利用。好比,上面给出了回滚JDBC事件的代码示例: publicvoidprocessT(Stringorders){
ContextinitCtx=newInitialContext();
javax.sql.DataSourceds=javax.sql.DataSource)initCtx.lookup("java:comp/env/jdbc/OrdersDB");
java.sql.Connectionconn=ds.getConnection();
try{
conn.setAutoCommit(false);//变动JDBC事件的默许提交体例
orderNo=createOrder(orders);
updateOrderStatus(orderNo,"orderscreated");
conn.commit();//提交JDBC事件
}catch(Exceptione){
try{
conn.rollback();//回滚sJDBC事件
thrownewEJBException("事件回滚:"+e.getMessage());
}catch(SQLExceptionsqle){
thrownewEJBException("呈现SQL操纵毛病:"+sqle.getMessage());
}
}
} (修正自,TransactionsinJ2EE(RedBooks).pdf中的一段Bean办理的JDBC事件) 上面给出了JTA事件代码示例: publicvoidprocessOrder(StringorderMessage){
UserTransactiontransaction=mySessionContext.getUserTransaction();//取得JTA事件
try{
transaction.begin();//入手下手JTA事件
orderNo=sendOrder(orderMessage);
updateOrderStatus(orderNo,"ordersent");
transaction.commit();//提交JTA事件
}catch(Exceptione){
try{
transaction.rollback();//回滚JTA事件
}catch(SystemExceptionse){
se.printStackTrace();
}
thrownewEJBException("事件回滚:"+e.getMessage());
}
} (修正自,TransactionsinJ2EE(RedBooks).pdf中的一段Bean办理的JTA事件)同时,假如SessionBean接纳JTA办理事件,必定不要经由过程JNDI猎取JTA事件,不然了局不可思议;而是接纳相似,“mySessionContext.getUserTransaction()”的办法猎取。最初,可使用容器办理事件(CMT)。在利用CMT过程当中,假如声明让容器完成事件回滚,则方针EJB使用必需抛出体系级非常,不然容器是不会满意事件的ACID。在包javax.ejb的非常类中,除NoSuchEntityException和EJBException属于体系级非常外,其他的非常全体是使用级非常。上述3点内容,值得读者注重。大概有些读者在利用EJBCMT过程当中,老是会碰到本人已将事件声明为“Required”,但就是不克不及够包管事件的ACID。因而,但愿读者注重J2EE使用中事件利用的分歧体例。具体情形,能够参考J2EETutorial一书中的事件处置章节。 别的, 1)在开辟EntityBeans过程当中,可以利用CMP的中央只管不要接纳BMP的体例。假如拟接纳BMP的体例,还不如接纳SessionBean+JDBC,个中能够经由过程JTA把持事件(假如功能成绩不是很主要的话)。
2)可以经由过程容器完成的事件(即,经由过程声明)的中央只管接纳,进步开辟效力,使得您能够加倍专注于营业逻辑自己。
3)只管接纳J2EE标准接纳的各项手艺。假如方针体系必要移植,但利用了良多与JBoss独有的手艺,其移植事情则很贫苦。 三,开辟Web使用一样平常情形下,开辟Web使用最好接纳一些Thirty-Part软件大概Framework。好比,Struts、Log4j、webMethods等等。其上风不言而喻。就今朝而言,Struts的使用基础上成了开辟Web使用的尺度。行将推出来的JSF很好的完成了与Struts的增补和集成。同时,JSF也将给疾速开辟JSPWeb前端使用带来反动。别的,Struts也恰好增进了JSF的开展。开辟JBoss3.2.1下的Web使用的历程和其他使用服务器下都差未几。同时,JBuilder8、9都已撑持Struts1.1。假如读者必要JBoss3.2.1下,分离Struts、EJB、JSP、Servlet、JavaBean相干实例的文章,能够给我提些倡议。 四,总结经由过程本文,将开辟J2EE使用相干的几个基础成绩做了开端的切磋。开辟J2EE使用触及到的成绩是一个体系工程成绩,也不是几篇文章、几本书可以回覆分明的,良多内容必要人人在理论中探索、进修,往前进。感谢人人。接待人人给我来信,配合切磋J2EE相干开辟、使用成绩。
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net网页编程里有这些工具吗?要简单多少?。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 Java是一种计算机编程语言,拥有跨平台、面向对java 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 Java是一种计算机编程语言,拥有跨平台、面向对java 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
页:
[1]
2