2016-03-26 12 views
0

Bunun bir tekrar sorusu gibi göründüğünü biliyorum, ancak stackoverflow ve diğer forumlardaki tüm mesajları denedim ama boşuna değil.Tomcat, MySQL -> '' URL'yi bağlamak için '' null '' sınıfının JDBC sürücüsü oluşturulamıyor 'null'

Apache Tomcat 8.0.32 Amazon RDS EC2 pencereler sunucuda tomcat Koşu MySQL 5.6 çalışan

benim app META-INF klasöründeki oturan My web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> 
... 
    <resource-ref> 
    <description>datasource</description> 
    <res-ref-name>jdbc/bbDataSource</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
    <res-sharing-scope>Shareable</res-sharing-scope> 
    </resource-ref> 
... 
</web-app> 

context.xml :

<?xml version="1.0" encoding="UTF-8"?> 
<Context path="/ch"> 
    <Resource name="jdbc/bbDataSource" 
     auth="Container" 
     type="javax.sql.DataSource" 
     username="********" 
     password="********" 
     driverClassName="com.mysql.jdbc.Driver" 
     url="jdbc:mysql://*url*:3306/x?zeroDateTimeBehavior=convertToNull"/> 
</Context> 

bir ServletContextListener içinde veri kaynağı oluşturma

try { 
     dataSource = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/bbDataSource"); 
     mLogger.log(Level.CONFIG, "Startup - AppContextServletListener - contextInitialized - Created dataSource object: {0}", dataSource); 
     sce.getServletContext().setAttribute("dataSource", dataSource); 
} 

Başlatma sırasında sorun yok. dataSource tomcat erişirken yukarıdaki hatayı atar. Ve jar dosyası tomcat lib klasöründe (aynı uygulamada hazırda bekletme özelliğini kullanıyorum ve herhangi bir sorun olmadan DB'ye erişebildiğim için sorun olduğundan şüphe duyuyorum).

Ayrıca şunu kaydettim: $ CATALINA_HOME/conf/Catalina/localhost 'ch.xml' içermiyor -> context.xml kopyalamak ve 'ch.xml' için yeniden adlandırmaktan başka bir yarar sağlama.

server.xml -> konak düğümü

<Host name="localhost" appBase="webapps" 
     unpackWARs="true" autoDeploy="true"> 
     <Context path="/ch" docBase="ch"></Context> 
     <Context path="/ch/asdasd" docBase="C:\\xasdasd\\asdasd"> </Context> 
+0

Olası kopyalar [Tomcat, Java ve SQL Server 2008 R2: 'bağlamak URL için' 'sınıfının JDBC sürücüsünü oluşturulamıyor' null] (http://stackoverflow.com/questions/9216283/tomcat-java -sql-server-2008-r2-yapamaz-jdbc-sürücü-sınıf-için-con) –

+0

gerçekten değil -> bu 'server.xml' sorusu kaynak beyanı/tanımı vardır. Bu durumda 'context.xml' buna sahiptir. – MandarK

+0

Bunun hakkında emin değilim, hepsi yanlış ad veya yanlış yapılandırma yerine aşağıya "ilişkili" altında birçok benzer sorunlar görüyorum; Bunları da gözden geçirmek isteyebilirsiniz. –

cevap

0

Altında Bu düzelttim: server.xml

bağlamında iki kez tanımlanması gerekir neden Wonder Kaynak satırı eklendi? Herhangi bir ipucu?

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> 
    <Context path="/ch" docBase="ch"> 
     <Resource name="jdbc/bbDataSource" 
      auth="Container" 
      type="javax.sql.DataSource" 
      username="********" 
      password="********" 
      driverClassName="com.mysql.jdbc.Driver" 
      url="jdbc:mysql://x:3306/x?zeroDateTimeBehavior=convertToNull"/> 
    </Context> 
</Host> 
ait
İlgili konular