Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с JNDI в JBOSS 
V
    Опции темы
Alexandr87
Дата 20.10.2006, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

Репутация: 6
Всего: 39



Вобщем, пытаюсь забиндить data source в JBOSS jboss-4.0.4.GA

postgresql-ds.xml
Код

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
   <local-tx-datasource>

      <jndi-name>PostgreSQLDS</jndi-name>

      <connection-url>jdbc:postgresql://127.0.0.1/root</connection-url>
      <driver-class>org.postgresql.Driver</driver-class>
      <user-name>root</user-name>
      <password></password>

      <min-pool-size>5</min-pool-size>
      <max-pool-size>20</max-pool-size>

      <track-statements/>

      <prepared-statement-cache-size>32</prepared-statement-cache-size>

   </local-tx-datasource>

   <local-tx-datasource>
      <jndi-name>comp/env/aaa/lrn1</jndi-name>
          <connection-url>jdbc:postgresql://127.0.0.1/root</connection-url>
          <driver-class>org.postgresql.Driver</driver-class>
          <user-name>root</user-name>
          <password></password>

          <min-pool-size>5</min-pool-size>
          <max-pool-size>20</max-pool-size>

          <track-statements/>
          <prepared-statement-cache-size>32</prepared-statement-cache-size>
   </local-tx-datasource>
</datasources>



Когда запускаю сервер он, среди прочего, выводит 
Код

13:42:50,846 INFO  [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=PostgreSQLDS' to JNDI name 'java:PostgreSQLDS'
13:42:50,854 INFO  [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=comp/env/aaa/lrn1' to JNDI name 'java:comp/env/aaa/lrn1'


Далее, вот это работает
Код

InitialContext context = new InitialContext();
DataSource ds = (DataSource) context.lookup("java:PostgreSQLDS");



, а вот это уже нет
Код

InitialContext context = new InitialContext();
DataSource ds = (DataSource) context.lookup("java:comp/env/aaa/lrn1");


експ
Код

13:52:32,927 ERROR [[NewServlet2]] Servlet.service() for servlet NewServlet2 threw exception
javax.naming.NameNotFoundException: aaa not bound
        at org.jnp.server.NamingServer.getBinding(NamingServer.java:529)
        at org.jnp.server.NamingServer.getBinding(NamingServer.java:537)
        at org.jnp.server.NamingServer.getObject(NamingServer.java:543)
        at org.jnp.server.NamingServer.lookup(NamingServer.java:267)
        at org.jnp.server.NamingServer.lookup(NamingServer.java:270)
        at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:625)
        at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:716)
        at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)
        at NewServlet2.processRequest(NewServlet2.java:42)
        at NewServlet2.doGet(NewServlet2.java:78)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
        at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
        at java.lang.Thread.run(Thread.java:595)



Почему так?

Это сообщение отредактировал(а) Alexandr87 - 20.10.2006, 10:58
PM Jabber   Вверх
Alexandr87
Дата 23.10.2006, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

Репутация: 6
Всего: 39



Это у меня одного или нет?

Ктондь попробуйте забиндить чтондь на этот адрес.
PM Jabber   Вверх
tux
Дата 23.10.2006, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



А ты в web.xml ссылку на ресурс прописывал?
PM MAIL Skype GTalk Jabber YIM   Вверх
Alexandr87
Дата 23.10.2006, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

Репутация: 6
Всего: 39



Цитата(tux @  23.10.2006,  18:41 Найти цитируемый пост)
А ты в web.xml ссылку на ресурс прописывал? 

Нет, ведь первый вариант работает. Сейчас попробывал добавить


Код

19:25:38,314 ERROR [MainDeployer] Could not start deployment: file:/opt/jboss-4.0.4.GA/server/default/deploy/WebTst.war
org.jboss.deployment.DeploymentException: Error during deploy; - nested throwable: (javax.naming.NamingException: resource-ref: java:comp/env/jdbc/lrn1 has no valid JNDI binding. Check the jboss-web/resource-ref.)
        at org.jboss.web.AbstractWebDeployer.start(AbstractWebDeployer.java:380)
        at org.jboss.web.WebModule.startModule(WebModule.java:83)
        at org.jboss.web.WebModule.startService(WebModule.java:61)
        at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
        at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
        at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
        at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
        at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
        at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
        at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
        at $Proxy0.start(Unknown Source)
        at org.jboss.system.ServiceController.start(ServiceController.java:417)
        at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
        at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
        at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
        at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
        at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
        at $Proxy40.start(Unknown Source)
        at org.jboss.web.AbstractWebContainer.start(AbstractWebContainer.java:466)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
        at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
        at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
        at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
        at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
        at org.jboss.mx.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:97)
        at org.jboss.system.InterceptorServiceMBeanSupport.invokeNext(InterceptorServiceMBeanSupport.java:238)
        at org.jboss.ws.server.WebServiceDeployer.start(WebServiceDeployer.java:117)
        at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.start(SubDeployerInterceptorSupport.java:188)
        at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:95)
        at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
        at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
        at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
        at $Proxy41.start(Unknown Source)
        at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1007)
        at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:808)
        at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:771)
        at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
        at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
        at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
        at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
        at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
        at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
        at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
        at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
        at $Proxy6.deploy(Unknown Source)
        at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)
        at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:634)
        at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263)
        at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:336)
        at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
        at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
        at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
        at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
        at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
        at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
        at $Proxy0.start(Unknown Source)
        at org.jboss.system.ServiceController.start(ServiceController.java:417)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
        at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
        at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
        at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
        at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
        at $Proxy4.start(Unknown Source)
        at org.jboss.deployment.SARDeployer.start(SARDeployer.java:302)
        at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1007)
        at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:808)
        at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:771)
        at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:755)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
        at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
        at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
        at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
        at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
        at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
        at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
        at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
        at $Proxy5.deploy(Unknown Source)
        at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:482)
        at org.jboss.system.server.ServerImpl.start(ServerImpl.java:362)
        at org.jboss.Main.boot(Main.java:200)
        at org.jboss.Main$1.run(Main.java:464)
        at java.lang.Thread.run(Thread.java:595)
Caused by: javax.naming.NamingException: resource-ref: java:comp/env/jdbc/lrn1 has no valid JNDI binding. Check the jboss-web/resource-ref.
        at org.jboss.web.AbstractWebDeployer.linkResourceRefs(AbstractWebDeployer.java:610)
        at org.jboss.web.AbstractWebDeployer.parseWebAppDescriptors(AbstractWebDeployer.java:508)
        at org.jboss.web.AbstractWebDeployer$DescriptorParser.parseWebAppDescriptors(AbstractWebDeployer.java:865)
        at org.jboss.web.tomcat.tc5.TomcatDeployer.performDeployInternal(TomcatDeployer.java:157)
        at org.jboss.web.tomcat.tc5.TomcatDeployer.performDeploy(TomcatDeployer.java:103)
        at org.jboss.web.AbstractWebDeployer.start(AbstractWebDeployer.java:371)
        ... 114 more


PM Jabber   Вверх
tux
Дата 23.10.2006, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Первый вариант работает потому что ты обращаешься напрямую к сервису JNDI. java:comp/env предполагает, что используется ссылка, описанная в web.xml. Приведи то, что у тебя в web.xml написано.
PM MAIL Skype GTalk Jabber YIM   Вверх
Alexandr87
Дата 24.10.2006, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

Репутация: 6
Всего: 39



Итак,

web.xml
Код

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <servlet>
        <servlet-name>NewServlet</servlet-name>
        <servlet-class>NewServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>NewServlet2</servlet-name>
        <servlet-class>NewServlet2</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>NewServlet</servlet-name>
        <url-pattern>/NewServlet</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>NewServlet2</servlet-name>
        <url-pattern>/NewServlet2</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
    <welcome-file>
            index.jsp
        </welcome-file>
    </welcome-file-list>
    <resource-ref>
        <res-ref-name>java:comp/env/jdbc/lrn1</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>


postgres-ds.xml
Код

<?xml version="1.0" encoding="UTF-8"?>

<datasources>
   <local-tx-datasource>

      <jndi-name>PostgreSQLDS</jndi-name>

      <connection-url>jdbc:postgresql://127.0.0.1/root</connection-url>
      <driver-class>org.postgresql.Driver</driver-class>
      <user-name>root</user-name>
      <password></password>

      <min-pool-size>5</min-pool-size>
      <max-pool-size>20</max-pool-size>

      <track-statements/>

      <prepared-statement-cache-size>32</prepared-statement-cache-size>

   </local-tx-datasource>

   <local-tx-datasource>
      <jndi-name>comp/env/jdbc/lrn1</jndi-name>
          <connection-url>jdbc:postgresql://127.0.0.1/lrn</connection-url>
          <driver-class>org.postgresql.Driver</driver-class>
          <user-name>root</user-name>
          <password></password>

          <min-pool-size>5</min-pool-size>
          <max-pool-size>20</max-pool-size>

          <track-statements/>
          <prepared-statement-cache-size>32</prepared-statement-cache-size>
   </local-tx-datasource>
</datasources>

, соответственно при старте сервера в логах есть
Код

11:29:01,310 INFO  [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=PostgreSQLDS' to JNDI name 'java:PostgreSQLDS'
11:29:01,319 INFO  [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=comp/env/jdbc/lrn1' to JNDI name 'java:comp/env/jdbc/lrn1'


Вызывается из NewServlet2.java, правда после добавления resource-ref в web.xml, приложение даже не деплоится, ошибка в посте выше.
Код

            InitialContext context = new InitialContext();
            DataSource ds = (DataSource) context.lookup(
                    "java:comp/env/jdbc/lrn1");

PM Jabber   Вверх
Alexandr87
Дата 26.10.2006, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

Репутация: 6
Всего: 39



Это у меня одного?
PM Jabber   Вверх
tux
Дата 26.10.2006, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Цитата(Alexandr87 @  26.10.2006,  22:44 Найти цитируемый пост)
Это у меня одного? 

Да!!! smile Наконец нашел время посмотреть в чем проблема. 

Значит так. В postgresql-ds.xml определяется под каким именем в дереве JNDI будет лежать объект источника данных. Ты пытаешься обратиться к нему по ссылке, в чем есть смысл - используя ссылку можно легко переключиться на другой источник данных ничего не меняя в приложении. 

Далее, в web.xml описывается имя, под которым ресурс известен приложению. То есть у нас есть "физическое" и "логическое" имена ресурсов. А теперь вопрос - каким образом они должны между собой связываться? Ведь при обращении по ссылке, начинающейся с java:comp/env/, мы должны получить тот ресурс, который находится по "физическому" адресу в JNDI. Вот этот момент связи у тебя очевидно и пропущен. Для того, чтобы обеспечить такую связь используется специфичный для JBoss конфиг - jboss-web.xml. Приведу то, что получилось у меня, думаю там все понятно.
postgres-ds.xml:
Код

<datasources>
  <local-tx-datasource>
    <jndi-name>jdbc/lrn1</jndi-name>
    <connection-url>jdbc:postgresql://localhost/auto</connection-url>
    <driver-class>org.postgresql.Driver</driver-class>
    <user-name>postgres</user-name>
    <password>1234</password>
        <new-connection-sql>select 1</new-connection-sql>

        <check-valid-connection-sql>select 1</check-valid-connection-sql>

      <metadata>
         <type-mapping>PostgreSQL 7.2</type-mapping>
      </metadata>
  </local-tx-datasource>
</datasources>

Здесь определяется физическое имя jdbc/lrn1.

web.xml:
Код

<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <resource-ref>
        <res-ref-name>jdbc/data-source</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>

Здесь определяется логическое имя jdbc/data-source.

jboss-web.xml:
Код

<jboss-web>
    <resource-ref>
        <res-ref-name>jdbc/data-source</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <jndi-name>java:/jdbc/lrn1</jndi-name>
    </resource-ref>
</jboss-web>

Здесь определяется связь между логическим именем (тэг res-ref-name) и физическим именем (тэг jndi-name). Заметь, что сервис JNDI в JBoss все ресурсы хранит в дереве начиная с префикса "java:/".
PM MAIL Skype GTalk Jabber YIM   Вверх
Alexandr87
Дата 27.10.2006, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

Репутация: 6
Всего: 39



jboss-web.xml
Код

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
    <security-domain flushOnSessionInvalidation="false"/>
    <context-root>/WebTst</context-root>
  
    <resource-ref>
        <res-ref-name>aaa/lrn1</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <jndi-name>java:/PostgreSQLDS</jndi-name>
    </resource-ref>
</jboss-web>


web.xml
Код

...
    <resource-ref>
        <res-ref-name>aaa/lrn1</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>
...


postgresql-ds.xml тот-же


вызываю так
Код

            InitialContext context = new InitialContext();
            DataSource ds = (DataSource) context.lookup(
                    "aaa/lrn1");


получаю так
javax.servlet.ServletException: aaa not bound



Я вот воткнутся не могу. 

короч видать придется забить на java:comp/env и писать как в первом посте в первом варианте - так никаких проблемм не возникает, но все же интересно - почему и как сделать.
PM Jabber   Вверх
tux
Дата 27.10.2006, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



"aaa/lrn1" действительно not bound. Все, что не начинается с java:comp/env JNDI API пытается найти в дереве JNDI, а у тебя там нет такого узла. К ссылке можно обратиться только так: java:comp/env/aaa/lrn1.
Попробуй так:
Код

InitialContext context = new InitialContext();
DataSource ds = (DataSource) context.lookup("java:comp/env/aaa/lrn1");

и все должно работать.
PM MAIL Skype GTalk Jabber YIM   Вверх
Alexandr87
Дата 27.10.2006, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

Репутация: 6
Всего: 39



tux,  большое спасибо!!!!!! Помог разобраться с сумбуром в моей голове.
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0719 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.