写一个最简单的JCA

JCA简介

JCA是Java Connection Architecture的缩写。它是Sun提出的一个标准,用于为连接外部系统定义一个规范。JCA标准定义非常宽泛,几乎泛泛的说了所有东西,但是并没有任何实现。所有JCA更像是一个元标准,具体怎么样需要看Application Server如何实现,也要看JCA提供者如何实现。

 

一个JCA可以实现的比较简单,也可以实现的比较复杂,但它不可能实现的非常简单。我自己玩了一下,实现一个比较简单的JCA。这只是JCA标准的其中一种用法,还有很多用法。下面只以这种用法来说明,可能和其它用法不是特别一致。

 

一个比较简单的JCA

只用到3个基本东西,Connection,ConnectionFactoy和ManagedConnectionFactory。没有用到Interaction,ManagedConnection,Transaction,Authentication。

 

从我的理解来说,Connection就是一个具体的连接。ConnectionFactory顾名思义就是产生Connection的Factory。ManagedConnectionFactory在这里用于生成ConnectionFactory。

 

先用IDE添加一个Connector工程,我只用过Eclipse创建。

 

添加一个类实现Connection,所有的方法用空实现。具体的执行方法需要自己定义。我就添加了一个execute方法。

public class ConnectionImp implements Connection {
    public String execute(String request) throws Exception
    {
         return request;
    }
}
 

添加一个类实现ConnectionFactory,除getConnection外其它用空实现。

public class ConnectionFactoryImp implements ConnectionFactory {
	@Override
	public Connection getConnection() throws ResourceException {
		return new ConnectionImp();
	}
}

 再同理实现一个ManagedConnectionFactory,除createConnectionFactory外其它用空实现。

 

public class ManagedConnectionFactoryImp implements ManagedConnectionFactory {
	@Override
	public Object createConnectionFactory(ConnectionManager arg0)
			throws ResourceException {
		return new ConnectionFactoryImp();
	}
}

部署JCA

虽然这个JCA已经生成,但是使用它或者测试它还有一段路要走。生成的JCA只是一个一种类型的连接,还没有生成任何的实际连接。生成实际连接的方法JCA规范没有怎么说,所以不同的Application Server可能会有不同的实现。

 

当然也可以自己写一个,无外乎调用ManagedConnectionFactory.createConnectionFactory生成一个ConnectionFactory还后注册到JNDI。

 

如果使用Glassfish,可以使用管理GUIhttp://localhost:4848/,或者使用命令行界面。先创建Connector Connection Pool,再创建Connector Resource。然后重启Application Server之后可以使用JNDI查询Connector Resource来使用。需要重启是一个比较大的问题,不知道Glassfish3会不会把这个缺点改调。

测试JCA

JCA部署之后就可以使用了,但是由于JCA只能在Application Server里运行,所以测试驱动也需要在Application Server里运行。能在Application Server里运行的方法很多,我感觉比较简单的是Dynamic Web Project加上Spring的ContextLoader。

 

你可能感兴趣的:(eclipse,spring,Web,ide,Glassfish)