今天项目完工。
做了个j2ee项目的移植,虽然没有写什么核心代码,不过也在项目移植的过程中学到不少东西。
如怎样从oracle数据库迁移到mysql,怎样从weblogic迁移到jboss。虽然网上有很到的移植办法。但是很多都不好用。还有很多是错误的。例如jboss与mysql连接那一个地方,如果是使用一个数据源的话不如这样改:
将jboss-4.0.0/docs/examples/jca
中的mysql-ds.xml
复制到jboss-4.0.0/server/default/deploy
然后将下面的配置copy过去
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <?xml version="1.0" encoding="UTF-8"?>
<datasources> <local-tx-datasource> <jndi-name>MySqlDS</jndi-name> <connection- url>jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=GBK </connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>root</user-name> <password>123</password>
<metadata> <type-mapping>mySQL</type-mapping> </metadata> </local-tx-datasource> </datasources>
|
在jboss-4.0.0/server/default/conf
改动login-config.xml
添加下面的语句:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <application-policy name = "MySqlDbRealm"> <authentication> <login-module code = "org.jboss.resource.security.ConfiguredIdentityLoginModule" flag = "required"> <module-option name ="principal"></module-option> <module-option name ="userName">root</module-option> <module-option name ="password">123</module-option> <module-option name ="managedConnectionFactoryName"> jboss.jca:service=LocalTxCM,name=MySqlDS </module-option> </login-module> </authentication> </application-policy>
|
在程序中写
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| try { Context context = new InitialContext(); ds = (DataSource)context.lookup("java:/MySqlDS"); conn = ds.getConnection(); conn.close(); } catch(Exception e) { ds =null; conn = null; }
try { conn = ds.getConnection(); ............. conn.close(); }
|
因为jboss会自动关闭数据库的连接
所以调用一次EJB中的数据库操作就要打开一次数据库。虽然这样很费时间,但很节约资源。
否则就会有close a connection
的jboss提示和sql语句执行异常。