longkai / lab

广西大学 - 雨无声实验室开放平台
4 stars 6 forks source link

直接用myEclipe6.0发布项目 spring管理bean的生成和事务、连接池 #19

Open neemo14-15 opened 10 years ago

neemo14-15 commented 10 years ago

JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。众所周知,属性名称符合这种模式,其他Java 类可以通过自身机制发现和操作这些JavaBean 的属性。 目录1基本概述

▪ 基本概念 ▪ 组成 ▪ 范围 ▪ 任务 ▪ 设计目标 ▪ 需求 ▪ 界限 ▪ 三大构件 ▪ 发展 2开发环境

▪ 设计环境 ▪ 运行环境 3入门 ▪ 一般要求 ▪ 特性 ▪ 操作 ▪ 事件 ▪ 注意事项 4区别SeverBean

neemo14-15 commented 10 years ago

由于是在tomcat开发之后部署的时候迁移到jboss中的,所以会遇到很多问题。开始用myEclipst直接部署项目,就遇到了许多包的问题,通过网上查资料和自己的分析思考基本都得到解决。可以参看上面的项目环境,当然这有一定的局限性。思想是最重要的,遇到问题先要分析,可以上网去找,然后再分析。其中有oracle驱动的问题让我郁闷了很久,由于用到了大文本(clob),要用oracle新的驱动包,在tomcat中加了这个满足要求的包,但是到了jboss中又出现大文本的问题,又换了n多包都不行。

neemo14-15 commented 10 years ago

基本概念 用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。 JavaBean可分为两种:一种是有用户界面(UI,User Interface)的JavaBean;还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的JavaBean。JSP通常访问的是后一种JavaBean。 JavaBean是可复用的平台独立的软件组件,开发者可以在软件构造器工具中其直接进行可视化操作。

neemo14-15 commented 10 years ago

看到了网上用jndi的配置,就转到了这个方向(参考下面的jndi)。结果了,折了一大圈又回来。spring的事务对jndi的支持不够(项目中用到了spring管理bean的生成和事务),如果强行换成那样,代码就要做很多修改,而我想的就是尽量不修改代码。快要崩溃了,结果偶然发现了,去掉那个oracle驱动也能运行。呵呵,沿着这个终于找到了,apache的commonlib.jar带有oracle的驱动包,在tomcat的中选择的是我加入的包,但是在jboss中就变成随机的了。把commonlib.jar干掉了,ok!当时很激动啊,这两天被折磨的哟。

neemo14-15 commented 10 years ago

软件构造器工具可以是Web页面构造器、可视化应用程序构造器、GUI设计构造器或服务器应用程序构造器。有时,构造器工具也可以是一个包含了一些bean的复合文档的文档编辑器。 JavaBean可以是简单的GUI要素,如按钮或滚动条;也可以是复杂的可视化软件组件,如数据库视图,有些JavaBean是没有GUI表现形式的,但这些JavaBean仍然可以使用应用程序构造器可视化地进行组合。 一个JavaBean和一个Javaapplet相似,是一个非常简单的遵循某种严格协议的Java类。每个JavaBean的功能都可能不一样,但它们都必须支持以下特征。

neemo14-15 commented 10 years ago

用jboss的jndi,初始化spring的dataSource.

 由于oracle包的问题走到了这里,以前没有了解过jndi的东西,这里自己的研究也学了不少东西。jboss的可以配置多个数据源,这就为分布式和ejb提供了基础,当然也包括分布式事务(jta).

jboss的jndi配置:

配置步骤开始:将部署到TOMCAT中的工程文件夹(blxt)名称改为blxt.war;将部署到TOMCAT中的工程文件夹(blxt)名称改为blxt.war;

配置步骤1 . 由于jboss会自动查找server/default/deploy目录下的 **-ds.xml文件.并读取其中内容.来得到相应的DataSource,我的文件具体内容如下:

neemo14-15 commented 10 years ago

一个bean没有必须继承的特定的基类或接口。可视化的bean必须继承的类是java.awt.Component,这样它们才能添加到可视化容器中去,非可视化bean则不需要继承这个类。有许多bean,无论是在应用程序构造器工具中,还是在最后创建好的应用程序中,都具有很强的可视化特征,但这并非每个bean必须的特征。 在使用Java编程时,并不是所有软件模块都需要转换成bean。Bean比较适合于那些具有可视化操作和定制特性的软件组件。

neemo14-15 commented 10 years ago

oracle-ds.xml:

<?xml version="1.0" encoding="UTF-8"?>

neemo14-15 commented 10 years ago

JavaBean可以看成是一个黑盒子,即只需要知道其功能而不必管其内部结构的软件设备。黑盒子只介绍和定义其外部特征和与其他部分的接口,如按钮、窗口、颜色、形状、句柄等。

JavaBean 图册(6张)通过将系统看成使用黑盒子关联起来的通讯网络,我们可以忽略黑盒子内部的系统细节,从而有效地控制系统的整体性能。 作为一个黑盒子的模型,JavaBean有3个接口面,可以独立进行开发。

  1. JavaBean可以调用的方法。
  2. JavaBean提供的可读写的属性。
  3. JavaBean向外部发送的或从外部接收的事件。
neemo14-15 commented 10 years ago
blxtORCLDS false jdbc:oracle:thin:@192.168.10.130:1521:oradb oracle.jdbc.driver.OracleDriver blxt blxt 50 200 5000 2 Oracle10g
neemo14-15 commented 10 years ago

一个JavaBean由3部分组成:      (1) 属性(properties)   JavaBean提供了高层次的属性概念,属性在JavaBean中不只是传统的面向对象的概念里的属性,它同时还得到了属性读取和属性写入的API的支持。属性值可以通过调用适当的bean方法进行。比如,可能bean有一个名字属性,这个属性的值可能需要调用String getName()方法读取,而写入属性值可能要需要调用void setName(String str)的方法。

neemo14-15 commented 10 years ago

每个JavaBean属性通常都应该遵循简单的方法命名规则,这样应用程序构造器工具和最终用户才能找到JavaBean提供的属性,然后查询或修改属性值,对bean进行操作。JavaBean还可以对属性值的改变作出及时的反应。比如一个显示当前时间的JavaBean,如果改变时钟的时区属性,则时钟会立即重画,显示当前指定时区的时间。   (2) 方法(method)   JavaBean中的方法就是通常的Java方法,它可以从其他组件或在脚本环境中调用。默认情况下,所有bean的公有方法都可以被外部调用,但bean一般只会引出其公有方法的一个子集。

neemo14-15 commented 10 years ago

由于JavaBean本身是Java对象,调用这个对象的方法是与其交互作用的唯一途径。JavaBean严格遵守面向对象的类设计逻辑,不让外部世界访问其任何字段(没有public字段)。这样,方法调用是接触Bean的唯一途径。   但是和普通类不同的是,对有些Bean来说,采用调用实例方法的低级机制并不是操作和使用Bean的主要途径。公开Bean方法在Bean操作中降为辅助地位,因为两个高级Bean特性--属性和事件是与Bean交互作用的更好方式。   因此Bean可以提供要让客户使用的public方法,但应当认识到,Bean设计人员希望看到绝大部分Bean的功能反映在属性和事件中,而不是在人工调用和各个方法中。

neemo14-15 commented 10 years ago

(3) 事件(event)   Bean与其他软件组件交流信息的主要方式是发送和接受事件。我们可以将bean的事件支持功能看作是集成电路中的输入输出引脚:工程师将引脚连接在一起组成系统,让组件进行通讯。有些引脚用于输入,有些引脚用于输出,相当于事件模型中的发送事件和接收事件。   事件为JavaBean组件提供了一种发送通知给其他组件的方法。在AWT事件模型中,一个事件源可以注册事件监听器对象。当事件源检测到发生了某种事件时,它将调用事件监听器对象中的一个适当的事件处理方法来处理这个事件。   由此可见,JavaBean确实也是普通的Java对象,只不过它遵循了一些特别的约定而已。

neemo14-15 commented 10 years ago

JavaBean 的范围 Scope 是一个具有生命时间的变量。JavaBean的范围在标志中右边进行表示。将产生一个JavaBean的快捷参考。 说明:jsp服务器引擎将剥离<jsp。。。。标记。并且在最终用户的浏览器上无法显示实际代码。 存在下面四种范围: 页面page、 请求request、 对话session、 应用application。 对话范围 对话范围的JavaBean 主要应用于跨多个页面和时间段: 例如填充 用户信息。 添加信息并且接受回馈,保存用户最.近执行页面的轨迹。对话范围JavaBean保留一些和用户对话 ID 相关的信息。这些信息来自临时的对话cookie,并在当用户关闭浏览器时,这个cookie将从客户端和服务器删除。

neemo14-15 commented 10 years ago

页面和请求范围的JavaBean有时类似表单的bean , 这是因为 他们大都用于处理表单。表单需要很长的时间来处理用户的输入,通常情况下用于页面接受HTTP/POST或者GET请求。另外页面和请求范围的bean可以用于减少大型站点服务器上的负载,如果使用对话bean,耽搁的处理就可能会消耗掉很多资源。 应用范围 应用范围通常应用于服务器的部件,例如 JDBC连接池、应用监视、用户计数和其他参与用户行为的类。 在Bean中限制HTML的产生: 理论上,JavaBean 将不会产生任何HTML,因为这是jsp层负责的工作;然而,为动态消息提供一些预先准备的格式是非常有用的。产生的HTML将被标注的 JavaBean方法返回。