Невозможно получить действительный источник данных из контекста.Получение '' для URL подключения 'исключение' null ' - PullRequest
0 голосов
/ 23 мая 2018

Получение исключения при попытке получить соединение с источником данных: невозможно создать драйвер JDBC
класса '' для URL-адреса соединения 'null' Контекст

web.xml
    </context-param>
    <resource-ref>
        <res-ref-name>jdbc/shop_MYSQL</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>

Pom
    <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jdbc</artifactId>
            <version>8.0.20</version>
        </dependency>

       code:
        Context ctx = new InitialContext();
        ds  = (DataSource) ctx.lookup("java:comp/env/jdbc/shop_MYSQL");
        Connection conn = ds.getConnection();

1 Ответ

0 голосов
/ 24 мая 2018

Вам нужно будет добавить банку соединителя mysql в Tomcat, поскольку он не входит в комплект поставки.Загрузите отсюда (для соответствующей версии MySQL)

https://dev.mysql.com/downloads/connector/j

Распакуйте загруженный zip-архив и скопируйте mysql-connector-java-xxxxx.jar в Tomcat папка lib (не WEB-INF / lib)

Также, если вы этого еще не сделали, определите свой источник данных как ресурс в Tomcat conf / context.xml

<Resource name="jdbc/shop_MYSQL" auth="Container" type="javax.sql.DataSource"
                   maxActive="100" maxIdle="30" maxWait="10000"
                   username="user" password="password" driverClassName="com.mysql.jdbc.Driver"
                   url="jdbc:mysql://localhost:3306/javatest"/>

Ваш код Java долженработать как есть.Однако вы не используете определенный вами ресурс-реф.Нужно ли вам или нет, является спорным - это для поддержания Deployer / роли разработчика отдельно, см здесь - но при условии, что вы делаете, вам требуется дополнительная линия для создания Java: контекст / сост / ENV и сделатьпоиск на это:

Context ctx = new InitialContext();
Context envCtx  = (Context) ctx.lookup("java:/comp/env");
ds  = (DataSource) envCtx.lookup("jdbc/shop_MYSQL");
Connection conn = ds.getConnection();
...