oracle9+XP+tomcat5.0.28+jdk1.4.2+struts1.2
struts连接oracle数据库,极其简单的功能,注册,登陆.不配置,直接在action 中操作,一切正常!
在struts-config.xml中, 配置datasources后,登陆就挂了:
HTTP Status 404 - Servlet actionServlet is not available.  !(很怪异,action-mapping 根本没动 ,原码也找了些高人看看了,也无问题) 我是初学者,唉,自己快疯了!!
我的config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" 
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources>
<data-source key="oracleDB1" type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName"
value="oracle.jdbc.driver.OracleDriver" />
<set-property property="url"
value="jdbc:oracle:thin:@127.0.0.1:1521:ZGYDB" />
<set-property property="maxActive"
value="5"/>
<set-property property="username"
value="jenny"/>
<set-property property="password"
value="888888"/>
<set-property property="autoCommit"
value="true"/>
</data-source>
</data-sources>难道strus1.2中不支持data-sources?各位大人,一般在哪里配置,在server.xml中?

解决方案 »

  1.   

    <data-sources>
    <!-- configuration for commons BasicDataSource -->
    <data-source type="org.apache.commons.dbcp.BasicDataSource">
        <set-property
          property="driverClassName"
          value="org.postgresql.Driver" />
        <set-property
          property="url"
          value="jdbc:postgresql://localhost/mydatabase" />
        <set-property
          property="username"
          value="me" />
        <set-property
          property="password"
          value="test" />
        <set-property
          property="maxActive"
          value="10" />
        <set-property
          property="maxWait"
          value="5000" />
        <set-property
          property="defaultAutoCommit"
          value="false" />
        <set-property
          property="defaultReadOnly"
          value="false" />
        <set-property
          property="validationQuery"
          value="SELECT COUNT(*) FROM et" />
    </data-source>
    </data-sources>
    public ActionForward
           execute(ActionMapping mapping,
                   ActionForm form,
                   HttpServletRequest request,
                   HttpServletResponse response) throws Exception
    {
     javax.sql.DataSource dataSource;
     java.sql.Connection myConnection;
     try {
      dataSource = getDataSource(request);
      myConnection = dataSource.getConnection();
      // do what you wish with myConnection
     } catch (SQLException sqle) {
        getServlet().log("Connection.process", sqle);
     } finally {
        //enclose this in a finally block to make
        //sure the connection is closed
        try {
           myConnection.close();
        } catch (SQLException e) {
           getServlet().log("Connection.close", e);
        }
       }
    }
      

  2.   

    没写过,不过可以写到web.xml中,不过可能需要自己解析
      

  3.   

    朋友实际开发中没有这么用的,放弃吧,把连接池配到tomcat或者其他地方吧呵呵
      

  4.   

    为什么不配置JNDI的DataSource呢?
      

  5.   

    在server.xml 中配置,很简单,我也是新手,昨天搞定(我用的sqlserver2000)
    在server.xml 的 </host> 加上以下代码:        <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_DBTest_log." suffix=".txt" timestamp="true"/>
              <Resource name="jdbc/DBConn" auth="Container" type="javax.sql.DataSource"/>
              <ResourceParams name="jdbc/DBConn">
                 <parameter>
                    <name>factory</name>
                    <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
                   </parameter>
                  <parameter>
                     <name>maxActive</name>
                     <value>100</value>
                  </parameter>
                  <parameter>
                      <name>maxIdle</name>
                      <value>30</value>
                     </parameter>
                  <parameter>
                        <name>maxWait</name>
                        <value>10000</value>
                       </parameter>
                  <parameter>
                    <name>username</name>
                    <value>sa</value>
                 </parameter>
                <parameter>
                  <name>password</name>
                  <value>iloveake</value>
                </parameter>
                <parameter>
                  <name>driverClassName</name>
                  <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
                </parameter>
                <parameter>
                  <name>url</name>
                  <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=jbuilder</value>
                </parameter>
              </ResourceParams>
            </Context>然后编写一个连接类:package employee;import javax.naming.*;
    import javax.sql.*;
    import java.sql.*;public class DBConn {    public static synchronized Connection getConnection() throws Exception{
            Connection conn=null;
            try{
                Context initCtx=new InitialContext();
                Context envCtx=(Context)initCtx.lookup("java:comp/env");
                DataSource ds=(DataSource)envCtx.lookup("jdbc/DBConn");
                conn=ds.getConnection();
            }
            catch(SQLException e){
                e.printStackTrace();
            }
            catch(NamingException e){
                throw e;
            }
            return conn;
        }
    }以后就可以在其他类中用:
    Connection conn=DBConn.getConnection();
    就可以了
      

  6.   

    在server.xml 的 </host> 前面加
    注意username,password,driverClassName,url的值换成自己的就行了
      

  7.   

    Struts1.2以后的确把DateSource给去掉了,所以你的猜测是正确的