当前位置: 首页 > 面试题库 >

在没有应用服务器的情况下如何欺骗jndi查找数据源

郑博
2023-03-14
问题内容

我想测试一些内部Web应用程序中的新功能。此新代码使用通常由应用程序服务器(tomcat)提供的数据库连接。

我不想在本地计算机上重新创建整个Web应用程序以测试新代码,因为我只需要运行一个功能。

有谁知道我可以“欺骗”上下文或数据源来检索数据库配置,而无需在服务器上实际创建Web应用程序实例吗?


问题答案:

随着春天的帮助SimpleNamingContextBuilder和Apache
的BasicDataSource,你可以做这样的事情(我通常有这个在测试类的静态块需要JNDI):

BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(db_driver_name);
dataSource.setUrl(db_connection_url);
dataSource.setUsername(db_username);
dataSource.setPassword(db_password);
SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder();
builder.bind(jndi_name, dataSource);
builder.activate();

的值jndi_name可能如下所示:java:comp/env/jdbc/my-db

设置完成后,通常可以通过JNDI查找数据库连接的代码将起作用。上面的代码例如将与此Spring配置一起使用:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName" value="java:comp/env/jdbc/my-db"/>
</bean>


 类似资料:
  • 我们想要自己的db连接配置而不是使用JNDI,但同时,我们也想使用DataSource而不是使用Drive verManager,怎么做?

  • 我有一个Spring boot项目,它有使用kafka进行日志记录的依赖项。我无法摆脱所述依赖项,因为我的逻辑需要来自该依赖项的代码 我已尝试禁用自动配置 我尝试通过bean配置将missingTopicsFatal设置为false 但很明显,设置已经是假的,因为我的应用程序运行时没有失败,只是tomcat不想打开侦听端口 应用程序启动,但spring拒绝打开侦听端口,并继续使用错误进行循环 在本

  • 问题内容: 我想问一下我是否可以在没有安装Web服务器的情况下运行php。我是否必须像CGI一样使用php并通过命令行运行我的页面?如果是这样,我必须通过安装php选择哪些步骤?我是说偏好设置为CGI以及该步骤之后的组件? 我安装了php 5.3.3,但似乎无法正常工作,我收到几则消息,提示缺少php5ts.dll,当我将该文件放在ext文件夹中时,会出现其他错误消息。是否需要使用任何配置文件或步

  • 我有一个包含不和谐机器人代码的Python脚本。当我运行它时,它会激活不和谐机器人,并显示机器人的在线状态。但是,当我结束python脚本时,它会禁用bot。即使离线,我如何在不使用服务器的情况下保持机器人活动?

  • 我复制了gRPC helloworld示例中粘贴的gRPC服务器。 它开始侦听指定端口中的RPC,但当我使用复制粘贴的客户端调用RPC时,它会崩溃,出现“中止(内核转储)”,在客户端收到错误消息“Endpoint read failed”。 我尝试通过在RPC函数实现中包含一些输出语句来调试它,但执行从未达到目的。 没有其他错误消息,是否有一些标志使故障更详细,以便调试?

  • 问题内容: 我在Android应用程序上使用Firebase,我知道如何使用EventListener从数据库中获取数据。到目前为止。 我的问题是:我有一个ReciclerView,它显示数据中的信息,但仅当我修改数据库时才显示。如果我关闭该应用程序然后再次打开,它什么也不会显示。然后,我进行一些修改,并将所有元素显示在容器中。 有什么方法可以加载数据而无需等待事件,而是手动获取? 先感谢您。 更