2015-08-14 3 views
0

Во-первых, я никогда не настраивал JDBC-пул раньше (так что я сожалею, если это кажется мирским). .., чтобы решить эту проблему, но безрезультатно, я исследовал предлагаемые варианты от различных других StackOverflow сообщений, но ни один не был успешнымНевозможно создать драйвер JDBC класса '' для подключения URL-адреса 'null' - HikariCP, Tomcat8, PostgreSQL

Я пробовал:

Я использую HikariCP с драйвером PostgreSQL (pgjdbc-нг). Tomcat8 развертывает мой файл войны, который я создаю с помощью maven. web.xml, context.xml, java-код.

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app> 
    <display-name>Restful Web Application</display-name> 
    <resource-ref> 
    <res-ref-name>jdbc/postgresHikari</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
    </resource-ref> 
    <servlet> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>com.seng402.rest</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <url-pattern>/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

context.xml

<?xml version="1.0" encoding="UTF-8"?> 
<Context> 
<Resource name="jdbc/postgresHikari" auth="Container" 
    factory="com.zaxxer.hikari.HikariJNDIFactory" 
    type="javax.sql.DataSource" 
    minimumIdle="5" 
    maximumPoolSize="10" 
    connectionTimeout="300000" 
    dataSource.implicitCachingEnabled="true" 
    dataSource.user="docker" 
    dataSource.password="docker" 
    jdbcUrl="jdbc:postgresql://192.168.59.103:5432/docker" 
    driverClassName="com.impossibl.postgres.jdbc.PGDataSource"/> 
</Context> 

ява код

Context initCtx = null; 
    try { 
     initCtx = new InitialContext(); 
     Context envCtx; 
     try { 
      envCtx = (Context) initCtx.lookup("java:comp/env"); 
      // Look up our data source 
      DataSource ds = (DataSource) envCtx.lookup("jdbc/postgresHikari"); 
      try { 
       // Allocate and use a connection from the pool 
       Connection conn = ds.getConnection(); // throws the error 
       conn.close(); 
       System.out.println("Connected!"); 
      } catch (SQLException e) { 
       System.out.println("Failed to Connect!"); 
       e.printStackTrace(); 
      } 
     } catch (NamingException e) { 
      System.out.println("Failed to Lookup!"); 
      e.printStackTrace(); 
     } 
    } catch (NamingException e1) { 
     System.out.println("Fail to get Context!"); 
     e1.printStackTrace(); 
    } 

Выход: Не удалось подключиться!

java.sql.SQLException: Невозможно создать драйвер JDBC класса '' для подключения URL 'нулевой'

ds.getConnection() бросает ошибку. Любые предложения относительно того, как я мог бы исправить это или отладить дальше, будут очень признательны.

РЕШЕННЫЙ !!! - context.xml не претворяется в папку META-INF

ответ

0

context.xml не был помещен в папку META-INF

0

С провайдером JNDI, не используйте dataSourceClassName (или dataSource.URL) свойств. Используйте jdbcUrl и driverClassName при необходимости (но сначала попробуйте без него).

+0

Пробовал оба из ваших предложений, к сожалению, никаких изменений в исключении. – Sowry

+0

Можете ли вы опубликовать новую конфигурацию с изменениями? – brettw

Смежные вопросы