Главная  |  Карта сайта
  Добро пожаловать, Гость  |  Вход   
  Поиск  
  Последние сообщения |  Кто в Online |  Зарегистрироваться |  Мой профиль |  Поиск 

Количество сообщений по данной теме: 6
       Сообщение 1 - 6 из 6        Создать новую тему
Автор
Предыдущая тема Эта тема просматривалась 444 раз и имеет 5 ответов Следующая тема
v_kukhta
Гость



Зарегистрирован:
04.02.2010
Количество сообщений: 4
Статус: Offline

Проблема с OpenCms 7.5.2 и DB2 Ответить

Здравствуйте!

Установил последнюю версию OpenCms 7.5.2 на сервере Tomcat 6.0.24 и СУБД DB2 9.5 Express.

Возникла следующая проблема: OpenCms нормально развернулась на сервере, правильно создала все таблицы, однако я не могу создавать никакие ресурсы (jsp, папки, html страницы и т.д.) - мастер просто пишет "No entries found", хотя там должен быть длинный список.

Посмотрел логи, там следующая ошибка:

Error reading groups of user Admin
org.opencms.db.CmsDbSqlException: Error reading all roles for user "Admin" over resource "/".

Caused by: com.ibm.db2.jcc.c.SqlException: DB2 SQL error: SQLCODE: -132, SQLSTATE: 42824, SQLERRMC: null


Оказалось, при использовании MS SQL и Postgresql с такой проблемой уже сталкивались, как описано здесь.

Ошибка возникает при генерации SQL запроса в OpenCms, который не может быть выполнен в СУБД, и для каждой СУБД необходимо менять конфигурационный файл query.properties, чтобы задать шаблоны запросов, а затем собирать OpenCms из исходников.

Не могли бы вы подсказать, что сделать в данном случае, чтобы успешно работать с DB2, т.к. в сети информации на эту тему нет. Работать с другой СУБД - не вариант, это требование проекта.

Хотелось бы ещё отметить, что ранняя версия OpenCms 7.0.3 работает с DB2 без всяких проблем. DB2 пробовал использовать разных версий - от 9.1 до 9.7 с одинаковым результатом.

Заранее спасибо!

[04.02.2010 23:42:43] Сообщить о зловредном сообщении: залогинтесь, пожалуйста  Перейти наверх 
nikolay
Продвинутый пользователь



Зарегистрирован:
12.09.2003
Количество сообщений: 123
Статус: Offline

Re: Проблема с OpenCms 7.5.2 и DB2 Ответить

Запостите пожалуйста полный stacktrace.

В целом, ошибка может быть не только в запросах, но и в драйвере JDBC (например в том, что использована неподходящая версия драйвера), или каких-либо настройках базы (с DB2 незнаком, поэтому более подробных предположений сделать не могу). Также, если в логах OpenCms нет полной информации об ошибке, ее можно попробовать найти в логах самой базы. Главное выяснить - вызвана ошибка неправильным синтаксисом SQL, направильным восприятием базой или JDBC-драйвером параметров, настройкой прав доступа, неверной инициализацией базы или чем-то еще. Тогда уже можно говорить о том, как эту проблемы решать.

[05.02.2010 14:22:31] Сообщить о зловредном сообщении: залогинтесь, пожалуйста  Перейти наверх 
v_kukhta
Гость



Зарегистрирован:
04.02.2010
Количество сообщений: 4
Статус: Offline

Re: Проблема с OpenCms 7.5.2 и DB2 Ответить

Спасибо большое за ответ!

Драйвер JDBC используется из дистрибутива OpenCms, который, исходя из документации, поддерживает любую версию DB2 9. Настройка прав доступа и инициализация базы сделаны правильно; база заполнена начальными данными.

Подробный stacktrace:

ERROR [explorer.CmsExplorerTypeAccess: 235] Error reading groups of user Admin
org.opencms.db.CmsDbSqlException: Error reading all roles for user "Admin" over resource "/".
at org.opencms.db.CmsDbSqlException.createException(CmsDbSqlException.java:117)
at org.opencms.db.CmsDbContext.throwException(CmsDbContext.java:238)
at org.opencms.db.CmsDbContext.report(CmsDbContext.java:212)
at org.opencms.db.CmsSecurityManager.getRolesForResource(CmsSecurityManager.java:2255)
at org.opencms.security.CmsRoleManager.getRolesForResource(CmsRoleManager.java:260)
at org.opencms.workplace.explorer.CmsExplorerTypeAccess.getPermissions(CmsExplorerTypeAccess.java:232)
at org.opencms.workplace.explorer.CmsExplorerTypeSettings.isEditable(CmsExplorerTypeSettings.java:460)
at org.opencms.workplace.explorer.CmsNewResource.getListItems(CmsNewResource.java:982)
at org.opencms.workplace.list.A_CmsListDialog.fillList(A_CmsListDialog.java:883)
at org.opencms.workplace.list.A_CmsListDialog.refreshList(A_CmsListDialog.java:628)
at org.opencms.workplace.list.A_CmsListDialog.actionDialog(A_CmsListDialog.java:364)
at org.opencms.workplace.list.A_CmsListResourceTypeDialog.actionDialog(A_CmsListResourceTypeDialog.java:217)
at org.opencms.workplace.explorer.CmsNewResource.actionDialog(CmsNewResource.java:416)
at org.opencms.workplace.list.A_CmsListDialog.displayDialog(A_CmsListDialog.java:411)
at org.opencms.workplace.list.A_CmsListDialog.displayDialog(A_CmsListDialog.java:396)
at com.ibm._jsp._newresource._jspService(_newresource.java:144)
at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:87)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:990)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:473)
at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:122)
at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:225)
at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionProcessor.handleRequest(AbstractJSPExtensionProcessor.java:278)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.include(WebAppRequestDispatcher.java:639)
at org.opencms.flex.CmsFlexRequestDispatcher.includeExternal(CmsFlexRequestDispatcher.java:194)
at org.opencms.flex.CmsFlexRequestDispatcher.include(CmsFlexRequestDispatcher.java:169)
at org.opencms.loader.CmsJspLoader.service(CmsJspLoader.java:555)
at org.opencms.flex.CmsFlexRequestDispatcher.includeInternalWithCache(CmsFlexRequestDispatcher.java:423)
at org.opencms.flex.CmsFlexRequestDispatcher.include(CmsFlexRequestDispatcher.java:173)
at org.opencms.loader.CmsJspLoader.dispatchJsp(CmsJspLoader.java:829)
at org.opencms.loader.CmsJspLoader.load(CmsJspLoader.java:512)
at org.opencms.loader.CmsResourceManager.loadResource(CmsResourceManager.java:1052)
at org.opencms.main.OpenCmsCore.showResource(OpenCmsCore.java:1490)
at org.opencms.main.OpenCmsServlet.doGet(OpenCmsServlet.java:153)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:990)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:473)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3276)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:267)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:811)
at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1455)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:113)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:454)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:383)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1469)
Caused by: org.opencms.db.CmsDbSqlException: An SQL error occurred when executing the following query: com.ibm.db2.jcc.c.gg@fa20fa2.
at org.opencms.db.generic.CmsVfsDriver.getResourceOus(CmsVfsDriver.java:3159)
at org.opencms.db.generic.CmsVfsDriver.readRelations(CmsVfsDriver.java:1796)
at org.opencms.db.CmsDriverManager.getResourceOrgUnits(CmsDriverManager.java:4127)
at org.opencms.db.CmsDriverManager.getRolesForResource(CmsDriverManager.java:4227)
at org.opencms.db.CmsSecurityManager.getRolesForResource(CmsSecurityManager.java:2253)
... 52 more
Caused by: com.ibm.db2.jcc.c.SqlException: DB2 SQL error: SQLCODE: -132, SQLSTATE: 42824, SQLERRMC: null
at com.ibm.db2.jcc.c.fg.e(fg.java:1596)
at com.ibm.db2.jcc.c.fg.a(fg.java:1206)
at com.ibm.db2.jcc.b.gb.g(gb.java:140)
at com.ibm.db2.jcc.b.gb.a(gb.java:39)
at com.ibm.db2.jcc.b.w.a(w.java:34)
at com.ibm.db2.jcc.b.vb.g(vb.java:139)
at com.ibm.db2.jcc.c.fg.n(fg.java:1177)
at com.ibm.db2.jcc.c.gg.eb(gg.java:1862)
at com.ibm.db2.jcc.c.gg.d(gg.java:2295)
at com.ibm.db2.jcc.c.gg.V(gg.java:424)
at com.ibm.db2.jcc.c.gg.executeQuery(gg.java:407)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93)
at org.opencms.db.generic.CmsVfsDriver.getResourceOus(CmsVfsDriver.java:3144)
... 56 more

Поискал в сети расшифровку SQLSTATE 42824, оказалось, что такая ошибка возникает при обработке неправильно использованного оператора LIKE, как описано здесь.

Буду благодарен за любую информацию по этой проблеме.

[05.02.2010 22:43:03] Сообщить о зловредном сообщении: залогинтесь, пожалуйста  Перейти наверх 
nikolay
Продвинутый пользователь



Зарегистрирован:
12.09.2003
Количество сообщений: 123
Статус: Offline

Re: Проблема с OpenCms 7.5.2 и DB2 Ответить

В данном случае используется следующий запрос:

SELECT DISTINCT
CMS_${PROJECT}_RESOURCE_RELATIONS.RELATION_SOURCE_ID,
CMS_${PROJECT}_RESOURCE_RELATIONS.RELATION_SOURCE_PATH,
CMS_${PROJECT}_RESOURCE_RELATIONS.RELATION_TARGET_ID,
CMS_${PROJECT}_RESOURCE_RELATIONS.RELATION_TARGET_PATH,
CMS_${PROJECT}_RESOURCE_RELATIONS.RELATION_TYPE
FROM
CMS_${PROJECT}_RESOURCE_RELATIONS
WHERE
CMS_${PROJECT}_RESOURCE_RELATIONS.RELATION_TYPE = ?
AND ? LIKE CONCAT(CMS_${PROJECT}_RESOURCE_RELATIONS.RELATION_TARGET_PATH, '%')

причем для первого аргумента используется setInt, а для второго второго - setString.

Посмотрите, что в этом запросе не согласуется с DB2. Если проблему нельзя решить настройками DB2 (введение дополнительных операторов, например, либо каким-либо другим способом), можно, чтобы не вносить изменения в сам OpenCms, написать свой VfsDriver, со своим файлом query.properties, в котором переопределить проблемный скрипт.

Рекомендую также, когда станет понятна точная причина ошибки, засабмитить баг в багтрекер OpenCms:

http://www.opencms.org/en/development/bugtracker.html

[08.02.2010 12:36:49] Сообщить о зловредном сообщении: залогинтесь, пожалуйста  Перейти наверх 
v_kukhta
Гость



Зарегистрирован:
04.02.2010
Количество сообщений: 4
Статус: Offline

Re: Проблема с OpenCms 7.5.2 и DB2 Ответить

Спасибо большое за информацию!

Буду разбираться.

[08.02.2010 21:37:34] Сообщить о зловредном сообщении: залогинтесь, пожалуйста  Перейти наверх 
v_kukhta
Гость



Зарегистрирован:
04.02.2010
Количество сообщений: 4
Статус: Offline

Re: Проблема с OpenCms 7.5.2 и DB2 Ответить

Попробую ещё написать в mailing list'е OpenCms. Всё-таки система широко используется, возможно, что кто-либо сталкивался с этой ситуацией.

Если выясню что-то - отпишусь.

[08.02.2010 21:46:41] Сообщить о зловредном сообщении: залогинтесь, пожалуйста  Перейти наверх 
       Сообщение 1 - 6 из 6        Создать новую тему