工作流学习笔记(一)

来源:互联网 发布:出库单打印软件 编辑:程序博客网 时间:2024/05/29 14:30
这几天在学习工作流,照着史蒂芬的笔记做请假工作的例子过程中,遇到了一些问题,
其中一个问题困扰了我好几天 。纪录下来
第一个异常是配置数据库的:org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for onnect URL 'null'
这个问题到网上一查很多相关的网友都遇到了这个问题,但是他们说的那些出错的地方我都没有错
同事也帮我找,也感觉这么配置不应该出现任何问题了,最后,感觉应该是和tomcat服务器有关。
换了个版本果然问题不存在了,最后张姐帮助我解决了这个问题,原来在配置数据库的时候tomcat5.0和tomcat5.5有一些差别把他们贴出来,这个是5.5的,只需要在server.xml文件中加入这段代码就可以
<Context
  docBase="myfirstworkflow"

  path="/myfirstworkflow"
  reloadable="true">
    <Resource name="jdbc/test"
    auth="Container"
    type="javax.sql.DataSource"
    maxActive="100"
    maxIdle="30"
    maxWait="10000"
    driverClassName="net.sourceforge.jtds.jdbc.Driver"
    username="sa"
    password="syb"
    url="jdbc:jtds:sqlserver://localhost:1433/workflow"
    defaultAutoCommit="true"
    removeAbondoned="true"
    removeAbondonedTimeout="60"
    logAbondoned="true"
    />

</Context>
5.0的则麻烦一些
<Server port="8005" shutdown="SHUTDOWN" debug="0">


  <!-- Comment out these entries to disable JMX MBeans support -->
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
            debug="0"/>
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
            debug="0"/>

  <GlobalNamingResources>

 
    <Environment name="simpleValue" type="java.lang.Integer" value="30"/>

    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
       description="User database that can be updated and saved">
    </Resource>
    <ResourceParams name="UserDatabase">
      <parameter>
        <name>factory</name>
        <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
      </parameter>
      <parameter>
        <name>pathname</name>
        <value>conf/tomcat-users.xml</value>
      </parameter>
    </ResourceParams>
       <Resource name="jdbc/test"
               auth="Container"
               type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/test">
    <parameter>
      <name>factory</name>
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>

    <!-- Maximum number of dB connections in pool. Make sure you
         configure your mysqld max_connections large enough to handle
         all of your db connections. Set to 0 for no limit.
         -->
    <parameter>
      <name>maxActive</name>
      <value>100</value>
    </parameter>

    <!-- Maximum number of idle dB connections to retain in pool.
         Set to -1 for no limit.  See also the DBCP documentation on this
         and the minEvictableIdleTimeMillis configuration parameter.
         -->
    <parameter>
      <name>maxIdle</name>
      <value>30</value>
    </parameter>

    <!-- Maximum time to wait for a dB connection to become available
         in ms, in this example 10 seconds. An Exception is thrown if
         this timeout is exceeded.  Set to -1 to wait indefinitely.
         -->
    <parameter>
      <name>maxWait</name>
      <value>10000</value>
    </parameter>

    <!-- MySQL dB username and password for dB connections  -->
    <parameter>
     <name>username</name>
     <value>sa</value>
    </parameter>
    <parameter>
     <name>password</name>
     <value>syb</value>
    </parameter>

    <parameter>
       <name>driverClassName</name>
       <value>net.sourceforge.jtds.jdbc.Driver</value>
    </parameter>
    <parameter>
      <name>url</name>
      <value>jdbc:jtds:sqlserver://localhost:1433/workflow</value>
    </parameter>
  </ResourceParams>


  </GlobalNamingResources>
  <Service name="Catalina">
  <Connector
port="5566"               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000"
               disableUploadTimeout="true" />

   
    <Connector port="8009"
               enableLookups="false" redirectPort="8443" debug="0"
               protocol="AJP/1.3" />

  
    <Engine name="Catalina" defaultHost="localhost" debug="0">

      <Logger className="org.apache.catalina.logger.FileLogger"
              prefix="catalina_log." suffix=".txt"
              timestamp="true"/>

      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                 debug="0" resourceName="UserDatabase"/>

      <Host name="localhost" debug="0" appBase="webapps"
       unpackWARs="true" autoDeploy="true">

        <Logger className="org.apache.catalina.logger.FileLogger"
                 directory="logs"  prefix="localhost_log." suffix=".txt"
            timestamp="true"/>

<Context path="/myfirstworkflow" reloadable="true" docBase="/myfirstworkflow" >

 <ResourceLink   name="jdbc/test"   global="jdbc/test"   type="javax.sql.DataSource"/>  
  
</Context>

 </Host>

    </Engine>

  </Service>

</Server>
这样配置,问题就解决了。
另一个问题:
javax.naming.NameNotFoundException: DefaultDS not bound
我原来配置的是DefaultDS数据源,后来把这个数据源改称test了。但是控制台却出现了这个异常。这个原因很简单,是因为我没有配置propertyset.xml文件,重新配置了这个文件后问题解决了。文件内容如下
<propertysets>
    <propertyset name="jdbc" class="com.opensymphony.module.propertyset.database.JDBCPropertySet">
        <arg name="datasource" value="jdbc/test"/>
        <arg name="table.name" value="OS_PROPERTYENTRY"/>
        <arg name="col.globalKey" value="GLOBAL_KEY"/>
        <arg name="col.itemKey" value="ITEM_KEY"/>
        <arg name="col.itemType" value="ITEM_TYPE"/>
        <arg name="col.string" value="STRING_VALUE"/>
        <arg name="col.date" value="DATE_VALUE"/>
        <arg name="col.data" value="DATA_VALUE"/>
        <arg name="col.float" value="FLOAT_VALUE"/>
        <arg name="col.number" value="NUMBER_VALUE"/>
    </propertyset>
</propertysets>
原创粉丝点击