转到正文

OneCMDB中文

研究和推广OneCMDB,传递ITIL&ITSM知识。

存档

标签: datasource.xml

默认的数据库能正常启动,按照网站上的文档更改配置文件DataSource.xml后出现启动错误。

2010-6-24 15:19:45 org.apache.catalina.core.StandardContext start
严重: Error listenerStart
2010-6-24 15:19:45 org.apache.catalina.core.StandardContext start
严重: Context [] startup failed due to previous errors

是什么原因?

OneCMDB使用Hibernate作为数据访问层,默认是支持Oracle数据库的,只需要更改数据访问参数就可以了。

OneCMDB Core中有关数据访问的配置位于<WebAppRoot>/WEB-INF/classes/datasource.xml中,这里WebAppRoot是Web应用的根目录,默认是tomcat-5.5.17/webapps/ROOT,如果找不到搜索一下吧。

datasource.xml原来内容如下:

<bean id="dataSource"
        class="org.onecmdb.core.internal.storage.DataSourceWrapper"
        destroy-method="close" >
        <property name="driverClassName" value="org.hsqldb.jdbcDriver" />
        <property name="url" value="jdbc:hsqldb:hsql://localhost" />
        <property name="username" value="sa" />
        <property name="password" value="" />

        <property name="initialSize" value="0" />
        <property name="maxActive" value="8" />
        <property name="minIdle" value="0" />
        <property name="maxIdle" value="8" />

        <property name="connectionProperties">
            <props>
                <prop key="shutdown">false</prop>
            </props>
        </property>
    </bean>

    <!--  Hibernate configuration taking the 'dataSoure' defintion  -->
    <!--  in account, specifically the dialect to use.              -->
    <!--                                                            -->
    <bean id="hibernateProperties" class="org.onecmdb.core.internal.storage.HibernateProperty">
        <property name="properties">
            <props>
                <prop key="hibernate.dialect">org.onecmdb.core.internal.storage.hibernate.hsql.HypersonicSQL18Dialect</prop>
                <prop key="show_sql">true</prop>
                <prop key="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</prop>
                <prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.jdbc.batch_size">20</prop>
            </props>
        </property>
    </bean>

Oracle 10g和Oracle11g修改为下配置:

<bean id="dataSource"
        class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
        <property name="url"
            value="jdbc:oracle:thin:@localhost:1521:Demo" />
        <property name="username" value="system" />
        <property name="password" value="demotest" />

        <property name="initialSize" value="0" />
        <property name="maxActive" value="8" />
        <property name="minIdle" value="0" />
        <property name="maxIdle" value="8" />

        <property name="connectionProperties">
             <props>
                   <prop key="shutdown">false</prop>
             </props>
        </property>
</bean>

    <bean id="hibernateProperties" class="org.onecmdb.core.internal.storage.HibernateProperty">
        <property name="properties">
                <props>
                    <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
                    <prop key="show_sql">true</prop>
                    <prop key="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</prop>
                    <prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
                    <prop key="hibernate.hbm2ddl.auto">create-update</prop>
                </props>
        </property>
    </bean>

Oracle9i使用以下配置:

<bean id="dataSource"
        class="org.onecmdb.core.internal.storage.DataSourceWrapper"
        destroy-method="close" >
        <property name="driverClassName" value="oracle.jdbc.OracleDriver" />
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:Demo" />
        <property name="username" value="system" />
        <property name="password" value="demotest" />

        <property name="initialSize" value="0" />
        <property name="maxActive" value="8" />
        <property name="minIdle" value="0" />
        <property name="maxIdle" value="8" />

        <property name="connectionProperties">
            <props>
                <prop key="shutdown">false</prop>
            </props>
        </property>
    </bean>

    <!--  Hibernate configuration taking the 'dataSoure' defintion  -->
    <!--  in account, specifically the dialect to use.              -->
    <!--                                                            -->
    <bean id="hibernateProperties" class="org.onecmdb.core.internal.storage.HibernateProperty">
        <property name="properties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
                <prop key="show_sql">true</prop>
                <prop key="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</prop>
                <prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
                <prop key="hibernate.hbm2ddl.auto">create-update</prop>
                <prop key="hibernate.jdbc.batch_size">20</prop>
            </props>
        </property>
    </bean>

其中黑体加粗斜体部分为修改的内容,修改好之后重新启动tomcat,即可重新在数据库中建立数据库结构。再次修改hibernate.hbm2ddl.auto属性为update,重启tomcat即可正常使用oracle数据库。

完成之后使用执行ROOT\WEB-INF\classes目录下create-index.sql中的语句建立索引(根据报错情况修改sql语句)。

或者使用附件中的sql文件完成表结构建立(hibernate.hbm2ddl.auto属性设置为update)。附件:onecmdb4Oracle.sql