Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с JDBC в Glassfish / 25 сообщений из 81, страница 1 из 4
27.06.2017, 00:12
    #39478055
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
Стал знакомиться с построением сайтов в Java. Попробовал Tomcat, потом решил, что для изучения JSF мне будет удобнее что-то другое, поставил Glassfish 4.1.2, определил JDBC-пул и ресурс jdbc/testORA для подключения к DB.

Пример 1 работает:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
<%@page language="java" contentType="text/html; charset=UTF-8"%>
/.. вырезано ../
<%
  InitialContext ctx = new InitialContext();
  DataSource ds = (DataSource) ctx.lookup("jdbc/testORA");
  Connection con = ds.getConnection();
  String someQuery = "select sysdate foo, 'sysdate' bar from dual";
  Statement stmt = con.createStatement();
  ResultSet rs = stmt.executeQuery(someQuery);
%>
<html>
  <head>
    <title>DB (Ora) Test</title>
  </head>
  <body>
  <h2>Results</h2>
<% while(rs.next()) { %>
    Foo <%= rs.getObject(1).toString()%> <br/>
    Bar <%= rs.getObject(2).toString()%> <br/>
<% }
  rs.close();
  con.close();
%>
  </body>
</html>



Пример 2 в Glassfish не работает:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
<%@page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page import = "java.io.*,java.util.*,java.sql.*"%>
<%@ page import = "javax.servlet.http.*,javax.servlet.*" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<sql:query var="rs" dataSource="jdbc/testORA">
select sysdate foo, 'sysdate' bar
from dual
</sql:query>

<html>
  <head>
    <title>DB (Ora) Test</title>
  </head>
  <body>
  <h2>Results</h2>

<c:forEach var="row" items="${rs.rows}">
    Foo ${row.foo}<br/>
    Bar ${row.bar}<br/>
</c:forEach>

  </body>
</html>


Оба примера работали под Tomcat'ом, но под Glassfish'ем второй - нет. Я получаю
Glassfishexception:
javax.servlet.ServletException: javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver found for jdbc/testORA"

root cause:
javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver found for jdbc/testORA"

С DB2 та же история.

Итак, дело не в том, что я не положил драйвера domain1/lib (я пробовал и app/WEB-INF/lib) и не в опечатках. Не вижу ничего полезного (для меня) в stack trace. DataSource как-то не так определяется?
...
Рейтинг: 0 / 0
27.06.2017, 00:23
    #39478058
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
Стектрейс не обязан показывать все шаги Classloader.

Помедитируй над значением System.getProperty("java.class.path") для Tomcat и для Glassfish.
...
Рейтинг: 0 / 0
27.06.2017, 00:26
    #39478060
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
Это поможет мне увидеть разницу между
DataSource ds = (DataSource) ctx.lookup("jdbc/testORA");
и
<sql:query var="rs" dataSource="jdbc/testORA">
?
Первое работает, второе нет, как с этим связан System.getProperty("java.class.path")?
...
Рейтинг: 0 / 0
27.06.2017, 00:35
    #39478061
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
Я все таки настаиваю чтобы ты просмотрел нужное проперти в двух конфигурациях. 99% ошибок поиска
драйвера сыпятся просто на неверной конфигурации путей поиска для ClassLoader

И еще... наблюдение. Обычно сообщение "No suitable driver found for " завершается не JNDI алиасом а
строкой "jdbc:oracle:thin....."

Проверь.
...
Рейтинг: 0 / 0
27.06.2017, 06:32
    #39478090
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
Victor MetelitsaЭто поможет мне увидеть разницу между
DataSource ds = (DataSource) ctx.lookup("jdbc/testORA");
и
<sql:query var="rs" dataSource="jdbc/testORA">


Для sql:query и прочего sql:XXX путь указывается относительно java:comp/env
И в примерах Томката он тоже есть. Вот из их доки на сайте:

Код: java
1.
2.
3.
4.
5.
6.
7.
// Obtain our environment naming context
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");

// Look up our data source
DataSource ds = (DataSource)
  envCtx.lookup("jdbc/EmployeeDB");
...
Рейтинг: 0 / 0
27.06.2017, 06:41
    #39478091
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
Что-то плохо копируется текст из PDF-ки по JSTL.

В общем, если по указанной в dataSource строке ничего в JNDI не найдено, то делается предположение, что это JDBC URL и еще чуть-чуть:
Код: java
1.
url[,[driver][,[user][,password]]]
...
Рейтинг: 0 / 0
27.06.2017, 07:10
    #39478093
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
Здесь у меня меня нет понимания, как работает и что происходит. Причём за свою жизнь я прочитал тонны книжек всяких учебников и документации на разные темы, обычно не встречая больших сложностей, но связанное с Java EE - это нечто особенное. Поэтому я хотел сделать минимальнейшую простейшую конфигурацию и разбираться постепенно, но даже и здесь провалился.
...
Рейтинг: 0 / 0
27.06.2017, 07:23
    #39478097
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
OK,
java.class.path= <%=System.getProperty("java.class.path") %>
даёт
java.class.path= c:\apache-tomcat-8.5.15\bin\bootstrap.jar;c:\apache-tomcat-8.5.15\bin\tomcat-juli.jar
и
java.class.path= C:/glassfish4/glassfish/modules/glassfish.jar;C:/glassfish4/glassfish/lib/monitor/flashlight-agent.jar
соответственно.

о чём это говорит?

Для sql:query и прочего sql:XXX путь указывается относительно java:comp/env
И в примерах Томката он тоже есть. Вот из их доки на сайте:

OK, а в синтаксисе
Код: html
1.
2.
3.
4.
<sql:query var="rs" dataSource="jdbc/testORA">
select sysdate foo, 'sysdate' bar
from dual
</sql:query


где место
Код: java
1.
2.
3.
4.
5.
6.
7.
// Obtain our environment naming context
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");

// Look up our data source
DataSource ds = (DataSource)
  envCtx.lookup("jdbc/EmployeeDB");


?
...
Рейтинг: 0 / 0
27.06.2017, 07:26
    #39478098
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
Некоторые вещи, по началу, лучше просто принять как данность. Когда дойдешь до изучения CD/DI все встанет на свои места.
...
Рейтинг: 0 / 0
27.06.2017, 07:28
    #39478099
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
maytonЯ все таки настаиваю чтобы ты просмотрел нужное проперти в двух конфигурациях. 99% ошибок поиска
драйвера сыпятся просто на неверной конфигурации путей поиска для ClassLoader

Почему для DataSource ds = (DataSource) ctx.lookup("jdbc/testORA"); путь поиска оказывается верным, и одновременно с этим
для <sql:query var="rs" dataSource="jdbc/testORA">тот же путь оказывается неверным?

И еще... наблюдение. Обычно сообщение "No suitable driver found for " завершается не JNDI алиасом а
строкой "jdbc:oracle:thin....."
Проверь.
Верно ли я скопировал сообщение с экрана? Да.
...
Рейтинг: 0 / 0
27.06.2017, 07:33
    #39478102
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
HettНекоторые вещи, по началу, лучше просто принять как данность. Когда дойдешь до изучения CD/DI все встанет на свои места.
Именно этот подход я и принял. Кстати, эта пресловутая DI - вещь, которая меня, smalltalk-программиста, особенно сильно бесит. Поэтому я с попытками чтения книжек по Spring временно завязал и пытаюсь "просто" с JSF начать.
...
Рейтинг: 0 / 0
27.06.2017, 07:36
    #39478103
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
Так понимаю, в первом случае поиск осуществляется в каталоге global, а во втором в comp (компонент). В первом он есть, во втором его нет.
...
Рейтинг: 0 / 0
27.06.2017, 07:37
    #39478104
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
...
Рейтинг: 0 / 0
27.06.2017, 07:43
    #39478106
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
Victor MetelitsaДля sql:query и прочего sql:XXX путь указывается относительно java:comp/env
И в примерах Томката он тоже есть. Вот из их доки на сайте:

OK, а в синтаксисе
Код: html
1.
2.
3.
4.
<sql:query var="rs" dataSource="jdbc/testORA">
select sysdate foo, 'sysdate' bar
from dual
</sql:query


где место
Код: java
1.
2.
3.
4.
5.
6.
7.
// Obtain our environment naming context
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");

// Look up our data source
DataSource ds = (DataSource)
  envCtx.lookup("jdbc/EmployeeDB");


?

В синтаксисе
Код: html
1.
2.
3.
4.
<sql:query var="rs" dataSource="jdbc/testORA">
select sysdate foo, 'sysdate' bar
from dual
</sql:query>



место
Код: java
1.
2.
3.
// Obtain our environment naming context
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");



делается неявно. Мы просто должны помнить, что путь указывается относительно java:comp/env. И такого "мы просто должны помнить" в мире джавы просто дофига. Особенно в Спринге. А может, не особенно. Просто я в Спринге дольше варился.
...
Рейтинг: 0 / 0
27.06.2017, 07:53
    #39478110
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
[quot Alexander A. Sak]Victor Metelitsaпропущено...
синтаксисе
Код: html
1.
2.
3.
4.
<sql:query var="rs" dataSource="jdbc/testORA">
select sysdate foo, 'sysdate' bar
from dual
</sql:query>



место
Код: java
1.
2.
3.
// Obtain our environment naming context
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");



делается неявно. Мы просто должны помнить, что путь указывается относительно java:comp/env. И такого "мы просто должны помнить" в мире джавы просто дофига. Особенно в Спринге. А может, не особенно. Просто я в Спринге дольше варился.
Про то, что в конечном счёте генерируется Java-код, мне рассказывать не надо. Я спрашиваю, что с этим делать:
Код: html
1.
2.
3.
4.
<sql:query var="rs" dataSource="jdbc/testORA">
select sysdate foo, 'sysdate' bar
from dual
</sql:query>


Может, нужен параметр какой-то дополнительный,
a la <sql:query var="rs" dataSource="jdbc/testORA" initialContext="java:comp/env">,
или другой синтаксис указания ссылки,
a la <sql:query var="rs" dataSource="java:comp/env ==> jdbc/testORA" >,
или нужно прописывание чего-то дополнительного в конфигурацию Glassfish,
или ...
...
Рейтинг: 0 / 0
27.06.2017, 08:32
    #39478124
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
Victor MetelitsaСтал знакомиться с построением сайтов в Java. Попробовал Tomcat, потом решил, что для изучения JSF мне будет удобнее что-то другое, поставил Glassfish 4.1.2
Божечки ты мой, какие страсти. Аж сердце ёкает, когда читаешь. Фтопку JSF и Glassfish. Это убогие, глючные, переусложненные технологии.
JHipster, Spring Boot, Bootstrap, HTTP/2, DHTML, CSS - вот что вам нужно изучать для "построения сайтов в Java".
...
Рейтинг: 0 / 0
27.06.2017, 08:38
    #39478129
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
Victor MetelitsaЗдесь у меня меня нет понимания, как работает и что происходит. Причём за свою жизнь я прочитал тонны книжек всяких учебников и документации на разные темы, обычно не встречая больших сложностей, но связанное с Java EE - это нечто особенное. Поэтому я хотел сделать минимальнейшую простейшую конфигурацию и разбираться постепенно, но даже и здесь провалился.
Java EE - это скопление самых нудных и ненужных стандартов. Это шлак в мире Java. Карго-культ. И я тоже когда-то
пытался делать минимальнейшие конфигурации и тоже огребал по полной.

Современные стартапы уже летают без Java EE а это вызывает зависть и нездоровые сомнения в линии партии.
...
Рейтинг: 0 / 0
27.06.2017, 08:39
    #39478130
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
Если выбирать лучший инструмент для внутрикорпоративных сайтов, то это будет Smalltalk (Cincom VisualWorks или VAST) + Seaside. Разумеется, при этом AJAX и CSS никто не отменял. Вопрос не в этом.

Как бы то ни было, оно заработало - после того, как я в web.xml приложения заменил
<res-type>javax.sql.DataSource</res-type>
на
<res-type>javax.sql.ConnectionPoolDataSource</res-type>.

Причём в определениях ресурсов для домена везде используется javax.sql.DataSource.
...
Рейтинг: 0 / 0
27.06.2017, 08:42
    #39478131
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
[quot mayton]Victor MetelitsaJava EE - это скопление самых нудных и ненужных стандартов. Это шлак в мире Java. Карго-культ. И я тоже когда-то
пытался делать минимальнейшие конфигурации и тоже огребал по полной.

Современные стартапы уже летают без Java EE а это вызывает зависть и нездоровые сомнения в линии партии.

Народ ринулся на JS-фреймворки и клепает одностраничные сайты - а за одностраничность мне хочется убивать. С одного зла переключились на другое.
...
Рейтинг: 0 / 0
27.06.2017, 08:42
    #39478132
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
Упс.
...
Рейтинг: 0 / 0
27.06.2017, 08:46
    #39478133
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
Victor MetelitsaНарод ринулся на JS-фреймворки и клепает одностраничные сайты - а за одностраничность мне хочется убивать. С одного зла переключились на другое.
Нет, уж давайте плодить унылое говно, которое на каждый клик перезагружает страницу.
...
Рейтинг: 0 / 0
27.06.2017, 08:48
    #39478135
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
maytonJava EE - это скопление самых нудных и ненужных стандартов. Это шлак в мире Java. Карго-культ. И я тоже когда-то
пытался делать минимальнейшие конфигурации и тоже огребал по полной.
Аналогично. Послушаешь всяких мудаков писателей на форумах, и подумаешь, а может JEE уже и не так плох. И потом, блин, мучаешься с этим барахлом. Всё. Хватит. Только Spring, только DHTML.
...
Рейтинг: 0 / 0
27.06.2017, 09:15
    #39478157
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
BlazkowiczVictor MetelitsaНарод ринулся на JS-фреймворки и клепает одностраничные сайты - а за одностраничность мне хочется убивать. С одного зла переключились на другое.
Нет, уж давайте плодить унылое говно, которое на каждый клик перезагружает страницу.

Даже JSF поддерживает AJAX, так что перезагрузка страницы не требуется. Кроме того, поменьше графики, рекламы и js-файлов - и перезагрузка не так страшна.
...
Рейтинг: 0 / 0
27.06.2017, 09:21
    #39478162
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
А кто запрещает использовать JEE в качестве бэкенда для того же Angilar?
...
Рейтинг: 0 / 0
27.06.2017, 09:22
    #39478164
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с JDBC в Glassfish
Вам никто. А я буду JSF копать.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с JDBC в Glassfish / 25 сообщений из 81, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]