Java控件设计入门(1)

发表于:2007-06-11来源:作者:点击数: 标签:
为什么需要控件(Controls) 企业资源访问是企业应用 开发 过程中的重要内容,然而企业资源的多样性对于软件开发者而言是个大难题。尽管J2EE标准中对于众多资源的访问接口进行了定义,然而对于软件开发者而言,这些接口仍然是太多了。我们简单的描述一下这个问

为什么需要控件(Controls)

企业资源访问是企业应用开发过程中的重要内容,然而企业资源的多样性对于软件开发者而言是个大难题。尽管J2EE标准中对于众多资源的访问接口进行了定义,然而对于软件开发者而言,这些接口仍然是太多了。我们简单的描述一下这个问题,首先看一下J2EE1.4的架构图。

 

图1:J2EE 1.4架构

上面这张图是J2EE 1.4标准中的J2EE架构图,从这张图上我们可以看到,J2EE标准中提供了丰富的组件、协议和系统服务满足企业的需求,比如EJB、JMS、JDBC、Web Services、JavaMail等等,方便企业根据不同的需求通过组合调用这些组件、协议和系统服务来建设企业的业务系统,然而企业本身业务随着市场的变化在不停的调整,不同时期、不同市场环境下的不同需求导致企业内部业务系统建设的极度不均衡,不同的数据库、不同的J2EE应用中间件、不同的架构设计导致企业应用开发的复杂度成倍增加。

举个简单的例子,让我们来看看如果要使用这些技术开发一个企业级系统,开发者需要完成的工作:

在一个企业级应用系统中,业务逻辑通常会被封装成EJB,开发者需要通过JNDI来访问EJB中的业务逻辑;异步的消息传递通常会使用JMS服务器,开发者需要通过调用服务器支持的队列或者主题来完成消息发送和接收;更多的情况下,开发者需要通过JDBC来访问企业数据库,完成相关数据的持久化工作,下面我们简单的看看访问这些资源所需要编写的代码片断。

访问一个EJB需要完成的代码

初始化EJB访问上下文 

Context context = new InitialContext();

//查找jndiName对应的EJB调用入口

Object o = ctx.lookup(“jndiName”);

//生成EJB访问的home接口

XXXHome home = (XXXHome) Javax.rmi.PortableRemoteObject

.narrow(o,XXXHome.class);

//创建EJB对象

XXX xxx = home.create();

//完成相关业务方法调用 



//EJB使用完毕,清除EJB对象

xxx.remove();

访问JDBC数据源要完成的代码

//加载数据库驱动

Class.forName(“driver_name_of_jdbc_driver”); 

//通过DriverManager获取数据库连接

Connection conn = DriverManager

.getConnection(jdbcUrl,userName,password); 

//创建Statement对象

Statement stmt = conn.createStatement();

//完成相关数据的访问



//关闭Statement对象

stmt.close();

//关闭数据库连接

conn.close();

访问JMS需要完成的部分代码

//初始化EJB访问上下文

Context context = new InitialContext();

//通过JNDI查询连接工厂

TopicConnectionFactory factory = (TopicConnectionFactory) ctx 

.lookup(“Weblogic.jws.jms. TopicConnectionFactory”);

//使用连接工厂创建JMS连接

TopicConnection conn = factory.createTopicConnection();

//创建JMS会话

TopicSession session = connection 

.createTopicSession(false,Session.AUTO_ACKNOWLEDGE);

//通过jndiName查找目的地(主题)

Topic topic = (Topic) ctx.lookup(“jndiName”);

//创建消息发生者

TopicPublisher publisher = session.createPublisher(topic);

//创建要发送的文本消息

TextMessage message = session.createTextMessage();

message.setText(“Hello World!”);

//发送文本消息

publisher.publish(message);


共5页: 1 [2] [3] [4] [5] 下一页

原文转自:http://www.ltesting.net

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
...