- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在评估 Quakus 作为 Tomcat 环境的替代品。我了解我正在尝试做的事情所面临的挑战,但我首先需要验证我现有的遗留 JSP 应用程序是否可以使用 Quarkus 运行。我使用 quarkus.undertow 作为我的 servlet 容器。
到目前为止,我已经克服了一些障碍。我现在遇到的问题是如何使用我的数据源。
目前,我们的数据源在 Tomcat 的 server.xml 中设置为 GlobalNamingResources,并将它们绑定(bind)在 Web 应用程序的 META-INF/context.xml 中作为 ResourceLinks。
我已将数据源设置转移到 Quarkus 的 application.properties,如下所示:
quarkus.datasource.menudb.url=jdbc:mysql://some.server.url/menuadmin
quarkus.datasource.menudb.driver=com.mysql.cj.jdbc.Driver
quarkus.datasource.menudb.username=web
quarkus.datasource.menudb.password=<password>
我从文档中了解到,这就是执行此操作的方法。但是,文档随后显示了注入(inject)数据源:
@Inject
@DataSource("users")
AgroalDataSource dataSource1;
就我而言,我会在注释中将 users
替换为我的数据源名称 menudb
。但是,我需要能够重用数据访问类来创建 InitialContext、使用传入的 JNDI 资源名称查找数据源并创建数据源:
InitialContext ic = new InitialContext();
DataSource ds = (DataSource)ic.lookup("java:comp/env/<jndi name>");
conn = ds.getConnection();
这会导致以下错误:
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:350)
at javax.naming.InitialContext.lookup(InitialContext.java:417)
at com.gy.obj.ContextManager.contextInitialized(ContextManager.java:367)
at io.undertow.servlet.core.ApplicationListeners.contextInitialized(ApplicationListeners.java:188)
...
初步研究让我选择了 Apache Camel,但乍一看,这似乎不是一个合适的解决方案。我还阅读了有关设置 jndi.properties 的信息:
# Needed env settings for JNDI.
java.naming.factory.initial=<Some JNDI Service Provider Name>
但我不确定要使用哪个提供商,而且目前似乎无法找到有关各个提供商的文档。
我的问题是,我至少走在正确的轨道上吗?我会使用哪个提供商?如果我没有的话,我真的不想接触我现有的数据访问类来提供注入(inject)。不过,我不会反对像我们目前为 Tomcat 配置的那样。
最佳答案
故意不支持 JNDI,因为我们认为它是一种不必要的复杂性,在 Quarkus 模型中没有用处:没有运行时部署,并且所有代码在构建时都是已知的,因此不需要这种解耦。
解决方案很简单:只需调整代码,使其不再从 JDNI 上下文中查找,而是从 CDI bean 管理器中查找。
虽然我们能够支持大多数高级 API,但移植现有应用程序应该很容易,但不要假设将提供所有遗留技术 - 现在是摆脱一些技术并继续前进的好时机。
也就是说,我认为 JNDI 可以很容易地被模拟,但到目前为止我们宁愿避免这种情况;如果这对您来说非常重要,请随时提出问题。
关于java - Quarkus 如何指定 JNDI 数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58401700/
我是 JNDI 的新手,我阅读了 oracle 的在线资料: http://docs.oracle.com/javase/jndi/tutorial/getStarted/overview/index
什么是JNDI? 它的基本用途是什么? 什么时候使用? 最佳答案 What is JNDI ? 它代表Java Naming and Directory Interface . What is its
我有完整的应用服务器背景,并考虑在 Jetty 等轻量级嵌入式服务器上运行应用。 我一直使用 JNDI 来查找连接池以查找数据库连接之类的东西,但我想知道这是否是轻量级案例的最佳方法。似乎如果我使用
您如何使用 JDBCRealm处理servlet 中的用户身份验证和授权?我能找到的唯一示例是在 web.xml 中创建数据源(例如 Authentication against database u
命名和目录 (JNDI) - 使用 JNDI 的陷阱是什么 最佳答案 这个问题有点含糊,但这里有几点需要考虑并且与 JNDI 相关。 JNDI 的好处是对象创建与对象查找分离 在 JDNI 中直接查找
在 Wildfly 9 中显示注册的 JNDI 名称的正确方法是什么? 对于旧版本,可以使用 /subsystem=naming:jndi-view ,但它似乎不再起作用。在域模式下运行时。 感谢帮助
我有两个 JBoss 服务器,JbossA 和 JbossB。每个都有自己的 JNDI。现在我在 JbossA 上有一个名为 jms/Client 的 JMS,在 JbossB 上有一个名为 jms/
这是我的“hibernate.cfg.xml”,我正在尝试连接到我的本地主机(postgres),但我不确定我是否输入了参数值(例如连接 url 或其他) : org.hiber
是否可以通过 JNDI 访问 Wildfly 属性(在 standalone.xml 中定义)? 喜欢: ... 并在java中阅读它: @Resource(lo
第126章OSGI Enterprise Release 5 specification提到兼容性: "Support the traditional JNDI programming model u
import org.apache.catalina.Context; import org.apache.catalina.deploy.ContextResource; import org.ap
在我们的项目中,我们使用 websphere liberty 服务器和 IBM MQ 作为消息服务器。我们在云中移动。我们想用 AWS SQS 替换 IBM MQ。在 server.xml 中,我们有
似乎每个人都说您应该使用 Tomcat 的 JNDI 上下文来管理您的 JDBC 连接和驱动程序等等。在阅读了文档之后,我理解了平局。但是,如果您使用它,您的应用程序必须从现在开始一直使用 Tomca
我正在 JBoss7.1.1 应用程序服务器上部署我的 MDB (EJB3.1)。当我使用@Resource进行数据源注入(inject)时,我使用全局JNDI引用名称(ENC +本地JNDI引用名称
使用 JBoss eap 6.4.12 出现错误: Error looking up ${email.jndi.lookup.binding} in JNDI 在我的 java 类中映射此 JNDI
使用com.sun.jndi.fscontext.RefFSContextFactory基于文件的 JNDI 上下文工厂,它似乎只允许在您指定的位置有 1 个绑定(bind)文件。例如 Hashtab
这是我的persistence.xml: org.hibernate.ejb.HibernatePersistence jdbc/abcDS 这是来自 src/test
我已经为我的模块之一运行了强化扫描,我已经收到了 动态代码评估:JNDI 引用注入(inject)漏洞问题 显示在下一行 lookup(dataSource) 数据源是动态的。我应该怎么做才能防止这种
我有 EJB 3.1 中的 EJB,我试图将其部署在 JBoss EAP 6 中,但是当我启动服务器时。它在 JNDI 名称中附加版本号,如下所示。 18:27:57,068 INFO [org.j
我有一个测试,它成功地使用嵌入式 glassfish 来测试 JCA 的部署。 但是,与已经在使用端口 3700 的 GlassFish 2.1 的运行版本存在冲突。 如何将嵌入的 GlassFish
我是一名优秀的程序员,十分优秀!