2011-04-14 45 views
0

我想用mysql設置orben窗體。我一直在以下這些步驟:Orbeon窗體和mysql:JDBC命名上下文問題

-Created模式 「ORBEN」 與相關用戶 「Orbeon」

-Donwloaded mysql的java的JDBC連接器,並將其存儲在tomcat的/ lib目錄

- 增加了數據庫的數據 - 增加以下行屬性 - Tomcat的那個local.xml/CONF/server.xml中

<Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource" 
      initialSize="3" maxActive="10" maxIdle="20" maxWait="30000" 
      driverClassName="com.mysql.jdbc.Driver" 
      poolPreparedStatements="true" 
      username="orbeon" 
      password="orbeon" 
      url="jdbc:mysql://IP_ADRESS_OF_MYSQL_SERVER:3306/orbeon"/> 

<property as="xs:anyURI" name="oxf.fr.persistence.app.uri.*.*.*" value="/fr/service/mysql"/> 
<property as="xs:anyURI" name="oxf.fr.persistence.service.mysql.datasource" value="mysql"/> 

然而,當我啓動Tomcat,訪問窗體生成器,我得到了以下錯誤在orbeon.log:

2011-04-14 14:36:11,652 ERROR SQLProcessor - PreparedStatement:null 
    2011-04-14 14:36:11,662 ERROR ProcessorService - Exception at oxf:/apps/fr/persistence/mysql/search.xpl (executing XSLT transformation) 
    *javax.naming.NameNotFoundException: El nombre jdbc no este asociado a este contexto* 
     at org.apache.naming.NamingContext.lookup(NamingContext.java:770) 
     at org.apache.naming.NamingContext.lookup(NamingContext.java:153) 
     at org.orbeon.oxf.processor.DatabaseContext.getConnection(DatabaseContext.java:56) 
     at org.orbeon.oxf.processor.sql.SQLProcessorInterpreterContext.getConnection(SQLProcessorInterpreterContext.java:334) 
     at org.orbeon.oxf.processor.sql.interpreters.QueryInterpreter.end(QueryInterpreter.java:173) 
     at org.orbeon.oxf.processor.sql.SQLProcessor$InterpreterContentHandler.endElement(SQLProcessor.java:540) 
... 

西班牙句子翻譯爲「jdbc的名稱沒有鏈接到這個方面。」

下鄉日誌,我們也可以發現:

2011-04-14 16:08:50,877 ERROR XFormsServer - xforms-submit-error - setting throwable {throwable: "org.orbeon.oxf.xforms.submission.XFormsSubmissionException: (processing submission response): xforms:submission for submission id: search-submission, error code received when submitting instance: 500 
null, line -1, column -1: xforms:submission for submission id: search-submission, error code received when submitting instance: 500 
    at org.orbeon.oxf.xforms.submission.XFormsModelSubmission.getReplacer(XFormsModelSubmission.java:672) 
    at org.orbeon.oxf.xforms.submission.RegularSubmission$1.call(RegularSubmission.java:96) 
    at org.orbeon.oxf.xforms.submission.RegularSubmission$1.call(RegularSubmission.java:68) 
    at org.orbeon.oxf.xforms.submission.BaseSubmission.submitCallable(BaseSubmission.java:222) 
    at org.orbeon.oxf.xforms.submission.RegularSubmission.connect(RegularSubmission.java:119) 
... 

任何幫助,將不勝感激,因爲我已經走進了死衚衕。我已閱讀相關文章,但找不到可以解決問題的任何信息。

由於提前,

阿爾瓦羅

參考文獻:

http://wiki.orbeon.com/forms/doc/developer-guide/form-runner/oracle-and-mysql-persistence-layers http://wiki.orbeon.com/forms/doc/contributor-guide/form-b​​uilder-integration-notes

軟件版本:

  • 的Mysql 5.1.37-1
  • Orbeon窗體3.9.0.rc1.201103220245 CE
  • MySQL的連接器的Java-508-bin.jar
  • 的Apache Tomcat版6.0.32

(後avernet答案) 我向server.xml中的數據庫資源添加了一個上下文。 Tomcat的位於 「C:\雄貓」 和orbeon.war在爲 「C:\ Tomcat的\的webapps \ orbeon.war」

完整的(和不正確)的server.xml是如下:

<?xml version='1.0' encoding='utf-8'?> 
<!-- 
    Licensed to the Apache Software Foundation (ASF) under one or more 
    contributor license agreements. See the NOTICE file distributed with 
    this work for additional information regarding copyright ownership. 
    The ASF licenses this file to You under the Apache License, Version 2.0 
    (the "License"); you may not use this file except in compliance with 
    the License. You may obtain a copy of the License at 

     http://www.apache.org/licenses/LICENSE-2.0 

    Unless required by applicable law or agreed to in writing, software 
    distributed under the License is distributed on an "AS IS" BASIS, 
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
    See the License for the specific language governing permissions and 
    limitations under the License. 
--> 
<!-- Note: A "Server" is not itself a "Container", so you may not 
    define subcomponents such as "Valves" at this level. 
    Documentation at /docs/config/server.html 
--> 
<Server port="8005" shutdown="SHUTDOWN"> 

    <!--APR library loader. Documentation at /docs/apr.html --> 
    <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> 
    <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html --> 
    <Listener className="org.apache.catalina.core.JasperListener" /> 
    <!-- Prevent memory leaks due to use of particular java/javax APIs--> 
    <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> 
    <!-- JMX Support for the Tomcat server. Documentation at /docs/non-existent.html --> 
    <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" /> 
    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> 

    <!-- Global JNDI resources 
     Documentation at /docs/jndi-resources-howto.html 
    --> 
    <GlobalNamingResources> 
    <!-- 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" 
       factory="org.apache.catalina.users.MemoryUserDatabaseFactory" 
       pathname="conf/tomcat-users.xml" /> 

<Context path="/orbeon" docBase="/webapps/" reloadable="false" override="true" allowLinking="true" crossContext="true"> 
    <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource" 
       initialSize="3" maxActive="10" maxIdle="20" maxWait="30000" 
       driverClassName="com.mysql.jdbc.Driver" 
       poolPreparedStatements="true" 
       username="orbeon" 
       password="orbeon" 
       url="jdbc:mysql://vmpresiges:3306/orbeon"/> 
</Context> 
    </GlobalNamingResources> 



    <!-- A "Service" is a collection of one or more "Connectors" that share 
     a single "Container" Note: A "Service" is not itself a "Container", 
     so you may not define subcomponents such as "Valves" at this level. 
     Documentation at /docs/config/service.html 
    --> 
    <Service name="Catalina"> 

    <!--The connectors can use a shared executor, you can define one or more named thread pools--> 
    <!-- 
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" 
     maxThreads="150" minSpareThreads="4"/> 
    --> 


    <!-- A "Connector" represents an endpoint by which requests are received 
     and responses are returned. Documentation at : 
     Java HTTP Connector: /docs/config/http.html (blocking & non-blocking) 
     Java AJP Connector: /docs/config/ajp.html 
     APR (HTTP/AJP) Connector: /docs/apr.html 
     Define a non-SSL HTTP/1.1 Connector on port 8080 
    --> 
    <Connector port="8080" protocol="HTTP/1.1" 
       connectionTimeout="20000" 
       redirectPort="8443" /> 
    <!-- A "Connector" using the shared thread pool--> 
    <!-- 
    <Connector executor="tomcatThreadPool" 
       port="8080" protocol="HTTP/1.1" 
       connectionTimeout="20000" 
       redirectPort="8443" /> 
    -->   
    <!-- Define a SSL HTTP/1.1 Connector on port 8443 
     This connector uses the JSSE configuration, when using APR, the 
     connector should be using the OpenSSL style configuration 
     described in the APR documentation --> 
    <!-- 
    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
       maxThreads="150" scheme="https" secure="true" 
       clientAuth="false" sslProtocol="TLS" /> 
    --> 

    <!-- Define an AJP 1.3 Connector on port 8009 --> 
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 


    <!-- An Engine represents the entry point (within Catalina) that processes 
     every request. The Engine implementation for Tomcat stand alone 
     analyzes the HTTP headers included with the request, and passes them 
     on to the appropriate Host (virtual host). 
     Documentation at /docs/config/engine.html --> 

    <!-- You should set jvmRoute to support load-balancing via AJP ie : 
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">   
    --> 
    <Engine name="Catalina" defaultHost="localhost"> 

     <!--For clustering, please take a look at documentation at: 
      /docs/cluster-howto.html (simple how to) 
      /docs/config/cluster.html (reference documentation) --> 
     <!-- 
     <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 
     -->   

     <!-- The request dumper valve dumps useful debugging information about 
      the request and response data received and sent by Tomcat. 
      Documentation at: /docs/config/valve.html --> 
     <!-- 
     <Valve className="org.apache.catalina.valves.RequestDumperValve"/> 
     --> 

     <!-- This Realm uses the UserDatabase configured in the global JNDI 
      resources under the key "UserDatabase". Any edits 
      that are performed against this UserDatabase are immediately 
      available for use by the Realm. --> 
     <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
      resourceName="UserDatabase"/> 

     <!-- Define the default virtual host 
      Note: XML Schema validation will not work with Xerces 2.2. 
     --> 
     <Host name="localhost" appBase="webapps" 
      unpackWARs="true" autoDeploy="true" 
      xmlValidation="false" xmlNamespaceAware="false"> 

     <!-- SingleSignOn valve, share authentication between web applications 
      Documentation at: /docs/config/valve.html --> 
     <!-- 
     <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> 
     --> 

     <!-- Access log processes all example. 
      Documentation at: /docs/config/valve.html --> 
     <!-- 
     <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
       prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/> 
     --> 

     </Host> 
    </Engine> 
    </Service> 
</Server> 

(avernet答案#2)之後的正確的server.xml是:

<?xml version='1.0' encoding='utf-8'?> 
<!-- 
    Licensed to the Apache Software Foundation (ASF) under one or more 
    contributor license agreements. See the NOTICE file distributed with 
    this work for additional information regarding copyright ownership. 
    The ASF licenses this file to You under the Apache License, Version 2.0 
    (the "License"); you may not use this file except in compliance with 
    the License. You may obtain a copy of the License at 

     http://www.apache.org/licenses/LICENSE-2.0 

    Unless required by applicable law or agreed to in writing, software 
    distributed under the License is distributed on an "AS IS" BASIS, 
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
    See the License for the specific language governing permissions and 
    limitations under the License. 
--> 
<!-- Note: A "Server" is not itself a "Container", so you may not 
    define subcomponents such as "Valves" at this level. 
    Documentation at /docs/config/server.html 
--> 
<Server port="8005" shutdown="SHUTDOWN"> 

    <!--APR library loader. Documentation at /docs/apr.html --> 
    <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> 
    <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html --> 
    <Listener className="org.apache.catalina.core.JasperListener" /> 
    <!-- Prevent memory leaks due to use of particular java/javax APIs--> 
    <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> 
    <!-- JMX Support for the Tomcat server. Documentation at /docs/non-existent.html --> 
    <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" /> 
    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> 

    <!-- Global JNDI resources 
     Documentation at /docs/jndi-resources-howto.html 
    --> 
    <GlobalNamingResources> 
    <!-- 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" 
       factory="org.apache.catalina.users.MemoryUserDatabaseFactory" 
       pathname="conf/tomcat-users.xml" /> 

    </GlobalNamingResources> 



    <!-- A "Service" is a collection of one or more "Connectors" that share 
     a single "Container" Note: A "Service" is not itself a "Container", 
     so you may not define subcomponents such as "Valves" at this level. 
     Documentation at /docs/config/service.html 
    --> 
    <Service name="Catalina"> 

    <!--The connectors can use a shared executor, you can define one or more named thread pools--> 
    <!-- 
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" 
     maxThreads="150" minSpareThreads="4"/> 
    --> 


    <!-- A "Connector" represents an endpoint by which requests are received 
     and responses are returned. Documentation at : 
     Java HTTP Connector: /docs/config/http.html (blocking & non-blocking) 
     Java AJP Connector: /docs/config/ajp.html 
     APR (HTTP/AJP) Connector: /docs/apr.html 
     Define a non-SSL HTTP/1.1 Connector on port 8080 
    --> 
    <Connector port="8080" protocol="HTTP/1.1" 
       connectionTimeout="20000" 
       redirectPort="8443" /> 
    <!-- A "Connector" using the shared thread pool--> 
    <!-- 
    <Connector executor="tomcatThreadPool" 
       port="8080" protocol="HTTP/1.1" 
       connectionTimeout="20000" 
       redirectPort="8443" /> 
    -->   
    <!-- Define a SSL HTTP/1.1 Connector on port 8443 
     This connector uses the JSSE configuration, when using APR, the 
     connector should be using the OpenSSL style configuration 
     described in the APR documentation --> 
    <!-- 
    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
       maxThreads="150" scheme="https" secure="true" 
       clientAuth="false" sslProtocol="TLS" /> 
    --> 

    <!-- Define an AJP 1.3 Connector on port 8009 --> 
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 


    <!-- An Engine represents the entry point (within Catalina) that processes 
     every request. The Engine implementation for Tomcat stand alone 
     analyzes the HTTP headers included with the request, and passes them 
     on to the appropriate Host (virtual host). 
     Documentation at /docs/config/engine.html --> 

    <!-- You should set jvmRoute to support load-balancing via AJP ie : 
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">   
    --> 
    <Engine name="Catalina" defaultHost="localhost"> 

     <!--For clustering, please take a look at documentation at: 
      /docs/cluster-howto.html (simple how to) 
      /docs/config/cluster.html (reference documentation) --> 
     <!-- 
     <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 
     -->   

     <!-- The request dumper valve dumps useful debugging information about 
      the request and response data received and sent by Tomcat. 
      Documentation at: /docs/config/valve.html --> 
     <!-- 
     <Valve className="org.apache.catalina.valves.RequestDumperValve"/> 
     --> 

     <!-- This Realm uses the UserDatabase configured in the global JNDI 
      resources under the key "UserDatabase". Any edits 
      that are performed against this UserDatabase are immediately 
      available for use by the Realm. --> 
     <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
      resourceName="UserDatabase"/> 

     <!-- Define the default virtual host 
      Note: XML Schema validation will not work with Xerces 2.2. 
     --> 
     <Host name="localhost" appBase="webapps" 
      unpackWARs="true" autoDeploy="true" 
      xmlValidation="false" xmlNamespaceAware="false"> 

     <!-- SingleSignOn valve, share authentication between web applications 
      Documentation at: /docs/config/valve.html --> 
     <!-- 
     <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> 
     --> 

     <!-- Access log processes all example. 
      Documentation at: /docs/config/valve.html --> 
     <!-- 
     <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
       prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/> 
     --> 
    <Context path="/orbeon" docBase="/orbeon" reloadable="false" override="true" allowLinking="true" crossContext="true"> 
     <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource" 
       initialSize="3" maxActive="10" maxIdle="20" maxWait="30000" 
       driverClassName="com.mysql.jdbc.Driver" 
       poolPreparedStatements="true" 
       username="orbeon" 
       password="orbeon" 
       url="jdbc:mysql://IP_ADDRESS:3306/orbeon"/> 
    </Context> 
     </Host> 
    </Engine> 
    </Service> 
</Server> 

回答

2

這個問題似乎歸結爲JNDI中未找到數據源。現在server.xml中的<Resource>oxf.fr.persistence.service.mysql.datasource屬性看起來都正確。我想知道<Resource>是否可能不在Tomcat的server.xml中的正確位置,因此該名稱對Orbeon Web應用程序不可見。我建議你把<Resource><Context >內的Orbeon Web應用程序,例如(這是我在本地的測試數據庫):

<Context path="/orbeon" docBase="/path/to/orbeon-war" reloadable="false" override="true" allowLinking="true" crossContext="true"> 
    <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource" 
     initialSize="3" maxActive="10" maxIdle="20" maxWait="30000" 
     driverClassName="com.mysql.jdbc.Driver" 
     poolPreparedStatements="true" 
     username="orbeon" 
     password="orbeon" 
     url="jdbc:mysql://localhost:3306/orbeon"/> 
</Context> 
+0

嗨avernet。感謝您的答覆。我根本沒有任何上下文,但我添加了上下文行,但仍然收到相同的錯誤。我將在原始文章中粘貼完整的「server.xml」。謝謝。 – 2011-04-15 07:04:29

+0

@Álvaro,''元素進入''而不是''。如果修改完成後,你會告訴我們。 – avernet 2011-04-15 17:39:27

+0

嗨avernet.Thanks很多,移動元素後,它現在工作。 – 2011-04-18 09:16:33