[英]Is it possible to create custom realm in tomcat without adding jar to lib folder?
[英]ClassNotFoundException after adding the jar to the lib folder of a Tomcat Service installation
我正在嘗試更新Web應用程序以使用DBCP。 事情在本地運行得很好(Windows安裝中通常是Tomcat)。 但是,在DEV服務器(EC2 LINUX AMI; Tomcat即服務)上,我得到以下信息
Could not create resource factory instance [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]
我將范圍縮小到(我認為)原來沒有tomcat-jdbc.ja
的/lib
文件夾。
此后,我添加了這個jar,並使用以下命令重新啟動了Tomcat實例...
sudo service tomcat7 restart
但是,我仍然得到相同的ClassNotFoundException。 如何獲得Tomcat服務來識別tomcat-dbcp.jar
?
編輯-這是運行sudo service tomcat7 start
后的堆棧跟蹤
Jan 20, 2014 5:30:35 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with JAR file [/usr/share/java/tomcat7/log4j.jar], exists: [false], canRead: [false]
Jan 20, 2014 5:30:35 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with JAR file [/usr/share/java/tomcat7/log4j.jar], exists: [false], canRead: [false]
Jan 20, 2014 5:30:36 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
Jan 20, 2014 5:30:37 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Jan 20, 2014 5:30:37 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Jan 20, 2014 5:30:37 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1404 ms
Jan 20, 2014 5:30:37 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jan 20, 2014 5:30:37 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.40
Jan 20, 2014 5:30:37 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /var/lib/tomcat7/webapps/ROOT.war
Jan 20, 2014 5:30:47 PM org.apache.catalina.core.StandardContext addApplicationListener
INFO: The listener "org.apache.myfaces.webapp.StartupServletContextListener" is already configured for this context. The duplicate definition has been ignored.
Jan 20, 2014 5:30:47 PM org.apache.catalina.core.NamingContextListener addResource
WARNING: Failed to register in JMX: javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]
Jan 20, 2014 5:30:50 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Jan 20, 2014 5:30:50 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jan 20, 2014 5:30:50 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 12969 ms
萬一其他人遇到此問題,請按以下說明解決。
在我的context.xml文件中,標簽必須具有以下屬性
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
...所以我的最終標簽看起來像....
<Resource name="jdbc/resourceName"
auth="Container"
type="javax.sql.DataSource"
logAbandoned="false"
maxActive="100"
maxIdle="30"
maxWait="10000"
username= "username"
password="password"
driverClassName="com.mysql.jdbc.Driver"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
url="jdbc:mysql://your.mysql.host"/>
基本上,我只是強迫它恢復為不使用Tomcat的DBCP類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.