项目完工

今天项目完工。
做了个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"?>  

<!-- $Id: mysql-ds.xml,v 1.3 2004/09/15 14:37:40 loubyansky Exp $ -->
<!--  Datasource config for MySQL using 3.0.9 available from:
http://www.mysql.com/downloads/api-jdbc-stable.html
\-->

<datasources>
<local-tx-datasource>
<jndi-name>MySqlDS</jndi-name>
<connection-
url>jdbc:mysql://localhost:3306/user?useUnicode=true&amp;characterEncoding=GBK
</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>123</password>

<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional)
-->
<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)//NamingException e)
{
ds =null;
conn = null;
}
而且(EJB)每一个执行sql的函数中都要这样写
try
{
conn = ds.getConnection();
.............
conn.close();
}

因为jboss会自动关闭数据库的连接
所以调用一次EJB中的数据库操作就要打开一次数据库。虽然这样很费时间,但很节约资源。
否则就会有close a connection的jboss提示和sql语句执行异常。