在jboss中连接oralce8
说明: jboss表示你所安装的jboss的总目录,红字表示需要修改或添加的位置
一 将classes12.jar 驱动包粘到 boss-3.2.6\server\default\lib 中
二 在 jboss-3.2.6\docs\examples\jca 的目录中 找到oracle-ds.xml 文件, 将其粘到
jboss-3.2.6\server\default\deploy 目录中
1. 修改 oracle-ds.xml文件 中的
<datasources>
<local-tx-datasource>
<jndi-name>OracleDS</jndi-name>
<connection-url>jdbc:oracle:thin:@youroraclehost:1521:yoursid</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>x</user-name>
<password>y</password> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
</local-tx-datasource>
</datasources>
改为
<connection-url>jdbc:oracle:thin:@135.0.0.116:1521:suncerdb</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>sunceroa</user-name>
<password>sunceroa</password>
( 如果是配置 Jboss-4.0.0,就删除以下说明)
<metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
2.在jboss-3.2.6\server\default\conf 目录中找到
standardjaws.xml、standardjbosscmp-jdbc.xml和login-config.xml三个文件
2.1先将其中的standardjaws.xml 的标签中的内容
<jaws>
<datasource>java:/DefaultDS</datasource>
<type-mapping>Hypersonic SQL</type-mapping>
<debug>false</debug>
改为
<datasource>java:/OracleDS</datasource>
<type-mapping>Oracle8</type-mapping>
<debug>false</debug>
2.2 再将 standardjbosscmp-jdbc.xml 中的
<jbosscmp-jdbc>
<defaults>
<datasource>java:/DefaultDS</datasource>
改为
<datasource>java:/OracleDS</datasource>
( 如果是 Jboss -4.0.0 ,就增加以下语句 )
<datasource-mapping>Oracle8</datasource-mapping>
2.3 (如果是配置 Jboss-4.0.0) 就无需修改此文件),最后 login-config.xml 中的
<policy>
<!-- Used by clients within the application server VM such as
mbeans and servlets that access EJBs.
-->
<application-policy name = "client-login">
<authentication>
<login-module code = "org.jboss.security.ClientLoginModule"
flag = "required">
</login-module>
</authentication>
</application-policy>
加入的位置
<!-- Security domain for JBossMQ -->
<application-policy name = "jbossmq">
加入下列标签
<application-policy name = "OracleDbRealm">
<authentication>
<login-module code = "org.jboss.resource.security.ConfiguredIdentityLoginModule"
flag = "required">
<module-option name = "principal">sa</module-option>
<module-option name = "userName">sa</module-option>
<module-option name = "password"></module-option>
<module-option name="managedConnectionFactoryName">
jboss.jca:service=LocalTxCM,name=OracleDS
</module-option>
</login-module>
</authentication>
</application-policy>
此时修改完成
三.启动Jboss 后如果出现
有红字的提示则部署成功
16:27:49,630 INFO [DLQ] Bound to JNDI name: queue/DLQ
16:27:49,680 INFO [JmsXA] Bound connection factory for resource adapter for ConnectionManager 'jboss.jca:service=TxCM,name=JmsXA to JNDI name 'java:/JmsXA'
16:27:49,690 INFO [OracleDS] Bound connection factory for resource adapter for ConnectionManager 'jboss.jca:service=LocalTxCM,name=OracleDS to JNDI name 'java:/OracleDS'
16:27:49,910 INFO [TomcatDeployer] deploy, ctxPath=/jmx-console, warUrl=file:/D:/java/jboss-3.2.6/server/default/deploy/jmx-console.war/
16:27:50,561 INFO [TomcatDeployer] deploy, ctxPath=/web-console, warUrl=file:/D:/java/jboss-3.2.6/server/default/deploy/management/web-console.war/
四.使用从数据缓冲池中得到oracle8连接
在你的数据库类中使用下列的语句
javax.naming.Context ctx = new javax.naming.InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:/OracleDS");
即可得到一个数据源对象 ds;
如在我们的sunceroa中对原来的数据库对象Database 的修改为
将
Database类的private void init(String jndiName, Context ctx)方法中的
private void init(String jndiName, Context ctx)
{
try
{
String strJNDI = "java:comp/env/" + jndiName;
_ds = (DataSource) ctx.lookup(strJNDI);
}
catch (Exception e)
{
setError("init(String)", "同数据库连接池建立连接发生错误!", e);
}
}
改为
String strJNDI = "java:/OracleDS";
其它暂不用改动
五 .测试
先在sunceroa中添加一个jsp页面中可以调用Database类,作它来添加、修改和删除
如:
<%@ page contentType="text/html; charset=gb2312"%>
<%@ page import="com.suncer.*"%>
<%
Database db=Database.getInstance();
String s[][]=db.executeQuery2("select * from modu");
out.println(s[1][2]);
out.println(db.executeUpdate("insert into test values(4,'new','new')"));
out.println(db.executeUpdate("update test set name='OK'"));
out.println(db.executeUpdate("delete test where id=4 "));
%>
再从Dos 转到sunceroa的目录下
使用 D:\eclipsePreject\sunceroa>jar cvf sunceroa.war * 命令打包
将其拷贝到jboss-3.2.6\server\default\deploy目录中启动Jboss-3.2.6
在IE中输入http://127.0.0.1:8080/sunceroa/test.jsp
如果页面中出现
协同办公的普通信息管理 true true true
表示成功.
配置 Jboss -4.0.0 的方法;