Tomcat7.05 bug

张林 发布于 2011/01/02 03:50
阅读 319
收藏 1

为了数据库缓存,配了Tomcat7的c3p0的缓存,结果从晚上9点,一直到凌晨3点一直报错,我用了各种调试手段,各种System.out.println() 没办法,期间搜baidu,也没结果,可能真的是我程序问题吧。

到了3点,接近崩溃的我,试了试google看能打开不,结果还真能打开,于是输入了错误代码:

javax.naming.NamingException: No set method found for property: singleton

还真给搜出来了。。。

原来TMD是个该死的bug!!!--------->https://issues.apache.org/bugzilla/show_bug.cgi?id=50351

看了看英文,大概就是个bug吧,说是7.0.x修复,不是吧,在看看,似乎要下trunk版本,又找了找居然有个BeanFactory的补丁,于是下下来,开包打补丁。再进eclipse删除服务器,重新部署,Oye,成功。

这里贴出我的配置:

server.xml,次要部分省略,从我的项目名上下文开始:

<Context docBase="Struts2Test" path="/Struts2Test"
                    reloadable="true" source="org.eclipse.jst.jee.server:Struts2Test">
                    <Resource auth="Container" driverClass="com.mysql.jdbc.Driver"
                        maxPoolSize="50" minPoolSize="2" acquireIncrement="2" name="jdbc/connPool"
                        user="wow" password="kqdnf" factory="org.apache.naming.factory.BeanFactory"
                        type="com.mchange.v2.c3p0.ComboPooledDataSource"
                        jdbcUrl="jdbc:mysql://localhost:3396/wow_account_db" />
                </Context>

web.xml<--------这个文件不是全局的,是我的项目下的web-inf下的

      <res-ref-name>jdbc/connPool</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>
</web-app>   <-----------------最后一行之上添加上述文本

配好之后如何链接?好吧,算我废话了,高手略过。。。。。

我写了个小方法

public Connection getConnection() {
        Connection conn=null;
        InitialContext ic=null;
        DataSource ds;
        try {
            ic = new InitialContext();
            ds = (DataSource) ic.lookup("java:comp/env/jdbc/connPool");//<---------这里的connPool和web.xml里的那个<res-ref-name>jdbc/connPool</res-ref-name>对应上
            conn=ds.getConnection();
        } catch (NamingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return conn;
    }

Oye,完了,高手别拍砖,大家互相学习。我承认我架了俩版本的魔兽世界服务,一个TBC,一个WLK,写了个管理小插件,不然我可懒得写这东西。。。。

补丁地址,发到了Oschina上,方便大家下载,写了详细教程,欢迎拍砖;

法师开门----------------->  http://www.oschina.net/code/snippet_74323_2733

加载中
0
张林
张林

BeanFactory.class 版本比较

bug版:

 do

                        {

                            if(i >= pda.length)

                                break;

                            if(pda[i].getName().equals(propName))

                            {

......

i++; } while(true);

修复后:

for(i = 0; i < pda.length; i++)

                        {

                            if(!pda[i].getName().equals(propName))

                                continue;

............

}

返回顶部
顶部