为什么它会提示空 URL,并在提供数据库URL时在exception中提供一个空的“”类? 我尝试使用Tomcat通过servlet连接到derby数据库。 当servlet运行时,我得到以下例外: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null' at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452) at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371) at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) at servlets.servlet_1.doGet(servlet_1.java:23) // —> Marked the statement in servlet at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) […]
任何人都可以帮助解释为什么JNDI应该是一个暴露服务,如数据库/ JMS的首选方式? 我遇到的post都谈到了无需加载特定的驱动程序pipe理器的好处,从连接池等方面的好处,但通过在属性文件中指定驱动程序pipe理器并使用reflection,可以轻松实现。 连接池也可以通过将正确的实现通过弹簧或其他方式连接到应用程序bean来实现。 那么为什么使用JNDI会更好呢?
我正在为我的EJB编写一个客户端,并试图执行它,我得到以下exception: javax.naming.NoInitialContextException:需要在环境或系统属性中指定类名称,或者作为applet参数或在应用程序资源文件中。 我不明白是什么问题。
任何人都可以告诉我或者指示我编码来列出远程机器上的所有jndi条目
java:comp/env是什么意思? 看起来像什么: Context envContext = (Context)initContext.lookup("java:comp/env"); 做? 我明白,一个查找像: (DataSource)envContext.lookup("jdbc/MyDatasource") 在context.xml或web.xml查找名称MyDatasource以获取数据库的URL。 是这样吗 ? ! 但是前者查找的是什么呢?
如果可能的话,你怎样才能实现JNDI的使用?
我正在尝试使用JNDI为Spring Web应用程序设置数据库连接属性。 我正在考虑两种方法如下: 方法1: 在你的Springconfiguration中你可能有这样的东西: <jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/facs"/> 然后在你的webapp /META-INF/context.xml文件中,你也应该有类似的东西: <?xml version='1.0' encoding='utf-8'?> <!– antiResourceLocking="true" –> <Context path="/podd-apn" reloadable="true" cachingAllowed="false" antiResourceLocking="true" > <Resource name="jdbc/facs" type="javax.sql.DataSource" username="${database.username}" password="${database.password}" driverClassName="org.postgresql.Driver" url="${database.url}" maxActive="8" maxIdle="4" global="jdbc/facs" /> </Context> 在你的web.xml中你应该像这样: <!– JNDI –> <resource-ref> <description>FACs Datasource</description> <res-ref-name>jdbc/facs</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> 方法2: 像这样在Spring环境中设置: <jee:jndi-lookup id="dbDataSource" jndi-name="jdbc/DatabaseName" expected-type="javax.sql.DataSource" /> 你可以使用类似下面的方法在Tomcat的server.xml中声明JNDI资源: <GlobalNamingResources> <Resource […]
我只是花了太多的时间试图在连接一些JNDI工厂bean的时候弄清楚一些错误。 问题原来是,而不是这个… <bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/jdbc/loc"/> </bean> 我其实写了这个… <bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="jdbc/loc"/> </bean> 我推断java:comp / env /可能会引用一些环境variables,并使得它最终会查看我的上下文文件。 唯一的区别是java:comp / env /。 从专家的口中,这是做什么的? 如果在值中没有java:comp / env前缀,我会得到一个错误,指出“名称jdbc未在此上下文中绑定”。
TL; DR 使用HornetQ设置configurationHA-JNDI服务的步骤是什么? 我相信这个文档有点分散。 我已经阅读了这里的文档,但似乎没有详细说明。 更长的版本: 所以我们有一个HornetQ JMS和JNDI。 我们有5个服务器,每个服务器都运行带有JNDI服务的HornetQ JMS主实例。 在这5台服务器的每一台上,我们也有一个从机运行其他一些HornetQ主机。 为了显示: Server A – HornetQa_master, JNDI, HornetQb_slave Server B – HornetQb_master, JNDI, HornetQc_slave Server C – HornetQc_master, JNDI, HornetQd_slave Server D – HornetQd_master, JNDI, HornetQe_slave Server E – HornetQe_master, JNDI, HornetQa_slave 这些HornetQ服务器中的每一个服务器都作为我们各种后端需求的中间件,这意味着5个服务器,5个HornetQ主实例,5个HornetQ从实例和5个JNDI服务器。 但是,这个设置的问题是,如果一个服务器主机(不只是进程,主机本身),说A下降,理想情况下,该服务应该回退到运行在A的HornetQ奴隶服务器E上的HornetQ。 然而,为了恢复HornetQ master,HornetQa_slave需要与运行在服务器A上的JNDI进程交互(我假定要复制消息)。 由于主机A本身已closures,所以运行在E上的HornetQa_slave无法与A上的JNDI进行通信,因此无法恢复为主进程。 如果JNDI服务高度可用,从属HornetQ进程可以按预期恢复为主服务器。 任何人都可以友好地指向文档或简单地说明我们如何将现有的设置转换为HA-JNDI? 对于它的价值,我已经阅读了多个来源 ,但是似乎没有详细说明如何开始configurationHA-JNDI。 请让我知道,如果你需要更多的信息关于我们目前的设置。 谢谢
什么是JNDI? 它的基本用途是什么? 什么时候使用?