您的位置:首页 > 数据库

[转]整合JBoss 3.x 和MS SQL Server 2000

2006-08-25 23:07 447 查看
准备工作[/b]

安装JBoss 3.x和MS SQL Server 2000
下载Microsoft SQL Server 2000 Driver for JDBC
http://www.microsoft.com/downloads/details.aspx?familyid=07287b11-0502-461a-b138-2aa54bfdc03a&displaylang=en#filelist
安装MS SQL Server 2000的sp3补丁包( http://www.microsoft.com/downloads/details.aspx?FamilyId=90DCD52C-0488-4E46-AFBF-ACACE5369FA3&displaylang=zh-cn#filelist )。注意,不升级的话是无法正确连接到MS SQL Server 2000上的,会出现Error establishing socket错误。

开始整合[/b]

1. 安装好Microsoft SQL Server 2000 Driver for JDBC后,在其安装目录\lib 下有三个包:msbase.jar、mssqlserver.jar、msutil.jar。把他们拷贝到%JBoss安装目录%\server\default\lib下

2. 将Jboss目录下的docs\examples\jca\中的mssql-ds.xml和mssql-xa-ds.xml拷贝到\server\default\deploy\目录下,并做相应修改(红色部分):

mssql-ds.xml[/b]:[/b]

<datasources>

<local-tx-datasource>

<jndi-name>MSSQLDS</jndi-name>
<connection-url>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Northwind</connection-url>

<driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class>

<user-name>sa</user-name>

<password></password>

</local-tx-datasource>

</datasources>

mssql-xa-ds.xml:[/b]

<datasources>

<xa-datasource>

<jndi-name>MSSQLXADS</jndi-name>

<xa-datasource-class>com.microsoft.jdbcx.sqlserver.SQLServerDataSource</xa-datasource-class>

<xa-datasource-property name="ServerName">localhost</xa-datasource-property>

<xa-datasource-property name="DatabaseName">Northwind</xa-datasource-property>

<xa-datasource-property name="SelectMethod">cursor</xa-datasource-property>

<!-- not sure if these should be here-->

<user-name>sa</user-name>

<password/>

</xa-datasource>

</datasources>

整合测试
[/b]

1. 编写SessionBean,在其中添加如下方法:

public String testDS() {

String resl = null;

try {

Properties p = new Properties();

p.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");

p.put(Context.PROVIDER_URL, "jnp://localhost:1099");

Context ctx = new InitialContext(p);

resl += "testing the database...\n";

javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup("java:/MSSQLDS");
//这个”MSSQLDS”必须和mssql-ds.xml[/b]文件中的jndi-name保持一致,否则会出错

java.sql.Connection conn =null;

java.sql.Statement st=null;

java.sql.ResultSet rs=null;

try {

conn = ds.getConnection();

st = conn.createStatement();

String sqlStr = "select * from Employees";

rs = st.executeQuery(sqlStr);

while (rs.next()) {

resl += rs.getString("FirstName") + " " +rs.getString("LastName")+"\n";

}

} catch (Exception e) {

}

finally {

if(rs!=null) rs.close();

if(st!=null) st.close();

if(conn!=null) conn.close();

}

} catch (Exception e) {

e.printStackTrace();

}

return resl;

}

2. 部署EJB

3. 测试SessionBean

public class test{

public void run() {

Properties p = new Properties();

p.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");

p.put(Context.PROVIDER_URL, "jnp://localhost:1099");

try {

Context ctx = new InitialContext(p);

Object obj = ctx.lookup("testBean");

testHome home = (testHome) PortableRemoteObject.narrow(obj, testHome.class);

test t = home.create();

System.out.println("test...");

String str = t.testDS();

System.out.println("received: \n" + str);

System.out.println("test finished!\n");

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

new test().run();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: