我想使用JPA/JNDI,因为我在NetBeans和Glassfish的经验是我可以在服务器上配置数据库设置,因此我可以在不更改代码或配置中的任何内容的情况下发布到其他服务器. 我没有真正遇到什么问题,并在这里粘贴我的配置,希望您能为我提供一些建议. 我成功地尝试通过此持久性单元获得数据库连接: org.primefaces.showcase.domain.Car
以下是关于 jndi 的编程技术问答
我们在Tomcat上部署了一个战争文件,数据库凭据通过JNDI获取.现在,这场战争必须移至AWS Cloud,其要求是DB凭据必须存储在AWS Secret Manager中.我的问题是我可以继续与秘密经理一起使用JNDI/TOMCAT吗?我了解AWS SM有API和SDK可以访问它,可以以某种方式与JNDI/TOMCAT集成吗?我看到的所有帖子都会直接从代码中使用API/SDK提及,我没有发现有关服务器集成的任何内容.从代码中访问AWS SM是真正的最佳方法吗?谢谢. 旁注 - 由于某些原因,我无法使用beanstalk,它只是ec2实例上的tomcat. 解决方案 也许您可以使用JDBC驱动程序包装器:如果您不使用连接池管理器,则仍然可以用包装器替换现有的JDBC驱动程序,但这将进行一些代码修改. 通过使用包装器,您也可以打开DB密码上的自动旋转
我能够通过JNDI读取在LDAP中存储的密码.但是结果是一些胆小的角色.那么我该如何解密 以下是我的代码: public static void main(String[] args) { String INITCTX = "com.sun.jndi.ldap.LdapCtxFactory"; String MY_HOST = "ldap://KhooGP-Comp1:1389"; String MGR_DN = "cn=Directory Manager"; String MGR_PW = "password"; String MY_SEARCHBASE = "dc=QuizPortal"; String MY_FILTER = "uid=yiwei"; String MY_ATTRS[] =
我设法像private NamingEnumeration ldapPagedSearch(String filter, int pageSize, int pageNumber){ InitialLdapContext ctx = getInitialContext(); //TODO: get the id also, need to spec it in UI // Create the search controls SearchControls searchCtls = new SearchControls(); searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE); //keep a session byte[] cookie = null; //Request the paged results control Control[] ctls = new Control[]{new PagedResultsContro
我正在使用spring和juetty 9的hikaricp 2.3.3,并试图解决一个事实,即当我加热新的战争文件时,所有的hikari数据库池连接到MySQL都会打开并空闲.我正在使用Spring ApplicationContext文件中的JNDI查找来从Jetty上下文文件中检索数据源. 由于我无法像定义数据源bean一样指定jndi-lookup中的销毁方法,因此我转到此问题:我应该关闭jndi-obted的数据源吗?,在哪里提到您可以尝试在servletContextlextlistListener的ContextDestroyed()方法中关闭数据源.在这种情况下,他们正在使用tomcat和c3po,所以我不确定示例有多少关系. 我在上下文删除的方法中尝试了以下内容: InitialContext initial; DataSource ds; try { initial = new InitialContext(); ds = (D
让我首先描述环境: 环境: -Mac OS X(Java构建1.6.0_35-B10-428-11M3811) - apache tomcat 7.0.30 -MySQL 5.5.27 -tomcat/lib-> mysql-connector-java-5.1.22-bin.jar 我已经成功实施了JDBCREALM ,并且想切换到DatasourCerealm,因为建议它用于生产环境.我使用基于表格的身份验证. 我在这里做了所有所描述的事情: html#datasourcerealm 和这里: jndi-datasource-examples-howto.html#mysql_dbcp_example server.xml
我想使用@Resource将Mongo数据库(com.mongodb.db)注入OSGI Web Bundle项目. 该应用程序将部署到WebSphere Liberty Profile v8.5.5.1. 这可以做到吗? 我收到了一条错误消息 " ....由于例外:java.lang.noclassdeffounderror无法获得注释 但是,我可以使用@Resource,在WebSphere Liberty配置文件上运行,即使不使用OSGI,我可以将Mongo数据库注入战争中. 下面是查找返回null. public static final DB getMongoDB() throws NamingException { InitialContext ic = new InitialContext(); DB lookup = (DB) ic.lookup("java:comp/env/mongo/testdb"); re
我想将jndi查找用于mongodb,wab/osgi内部运行自由度配置文件. import com.mongodb.DB; @WebServlet("/MongoServlet") public class MongoServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { DB db = (DB) new InitialContext().lookup("java:comp/env/mongodb"); } catch (NamingException e
我正在与jbossas7合作. 我的应用程序有一些OSGI模块和大型非OSGI部分. 我尝试通过JNDI查找非OSGI子系统中的OSGI服务,但它们在JNDI上下文中不存在. 我在 jboss 7-OSGI Bundles中不存在Jndi Bunde,树,但我在那里找不到任何解决方案.如果JBOSS团队尚未实施此功能,我现在该如何解决此问题? 我尝试手动将服务添加到JNDI上下文中,但由于仅读取JNDI上下文而有例外(根据 解决方案 尚未完全集成(Monitor jbosgi-81 检查状态),但是我认为您可以通过服用Apache Aries Jndi Osgi捆绑并将其部署到JBOSS AS7. 来完成此工作. 要执行此操作,部署并开始 aries jndi捆绑包 aries代理捆绑包 aries util束 JNDI捆绑包将抱怨它不能与NamingManager设置一些静态,但是您可以忽略这一点,因为AS7 JNDI照顾了这一点. 上面安装的捆绑包,您
osgi Enterprise版本5规格提及兼容性: "支持Java SE和Java EE客户使用的传统JNDI编程模型." 以及OSGI-Unaware代码的使用: "不知道OSGI的客户和JNDI上下文提供商使用静态方法连接到 JRE JNDI实施. InitialContext类提供了从提供商和 提供商使用静态namingmanager方法进行对象转换并找到URL上下文. 这种传统模型不知道OSGI,因此只能在后果时可靠地使用 缺乏OSGI意识是受到管理的." ,我尚不清楚该文本是否仅适用于OSGI捆绑包内执行的"旧版"代码,或者在OSGI容器外部的f ex中代码在OSGI容器中嵌入了应用程序中的情况. 在嵌入方案中,OSGI容器内部和内部可能都有执行JNDI调用的应用程序代码,并且当它们在同一JVM中执行时,他们将共享JNDI实现. 问题:在嵌入式OSGI容器中运行的OSGI JNDI实现应该允许容器外的Osgi-Unaware代码执行其JND
我无法运行我的JNDI DataSource. 遵循官方的Grails文档,我在Config.groovy中设置了一个数据库: grails.naming.entries = [ "mydatasource": [ type: "javax.sql.DataSource", auth: "Container", description: "Development Datasource", url: "jdbc:oracle:oci:@mydb", username: "user", password: "pass", maxActive: "8", maxIdle: "4" ]
当context.xml中有多个元素,web.xml中的一个以上元素时,我的应用程序开始投掷 TNS:no appropriate service handler found 和 ORA-01017: invalid username/password; logon denied 但是,如果JNDI中只有一个数据源,这意味着另一个使用常规JDBC数据源,则该应用程序像魅力一样运行 两个数据源都来自同一db URL,但使用不同的架构. 我的猜测是,它可能是由使用不同的用户名/密码(架构)的每个资源的数据库URL引起的.但是tomcat应该能够处理这种情况,所以我的理由是我错过了一些配置? 另一个有趣的发现是: 当我将JDBC URL jdbc:oracle:thin:@myhost:1521:orcl与SQL Developer一起设置连接时,有时它会毫无问题地连接,但是有时它会拒绝相同的问题:appro
我们正在使用Tomcat-7.0.33. Spring 3.0.1和JPA使用Tomcat JNDI DataSource.使用ojdbc6.jar(最新). 在后端的Oracle 10g 当我们试图不放弃应用程序时,某些Oracle类似乎正在泄漏.我在使用较旧的ojdbc14.jar驱动程序时看不到这一点,但是当我们迁移到需要较新驱动程序的Oracle 11G时,我们无法使用这些驱动程序.我猜这是Oracle驱动程序中的错误?我可以做些什么来清理这些资源?我已经尝试关闭数据库连接池和其他事项无济于事... 我最好不要使用Tomcat的连接池吗?我们宁愿将服务器连接到数据库,但是如有必要,我们可以自己做... 服务器控制台显示: 17505 Info org.springframework.orm.jpa.localcontainerentitymanagerfactorybean-关闭JPA EntityManagerFactory的持久性单位" mymanage
为什么java.sql.connection不能在下面的代码中施加到oracle.jdbc.oracleconnection? 我的主要目标是传递到Oracle连接新用户名并将其保存在'session'表中,例如" Osuser"列,因为我想跟踪DB用户更改并将其显示在表中. . @Repository public class AuditLogDAOImpl implements AuditLogDAO { @PersistenceContext(unitName="myUnitName") EntityManager em; @Resource(name = "dataSource") DataSource dataSource; public void init() { try { Connection connection = DataSourceUtils.getConnect
在过去的几周中,我一直在寻找解决方案,以在两个上下文/战争文件之间共享对象.有多种方法可以做到这一点,其中之一就是JNDI. 我对Tomcat中使用的JNDI并不熟悉,所以要澄清一些问题: 基本上,我有一个对象的实例,可以为多个上下文/应用程序提供以下服务 检查用户是否已登录 检查用户的会话是否有效 登录用户 - 包括记录登录详细信息 注销用户 - 删除会话 每个应用程序将调用此对象以在处理任何请求之前验证用户.我不明白的是,如果对象存储在JNDI上,则该对象将如何工作.我已经看到了一些有关JNDI在Tomcat中如何使用的示例,但是99%的示例显示了如何配置JDBC数据源. jndi中初始化的对象如何确切.例如,以下来自Tomcat文档的配置显示了JDBC的配置
您是否知道是否可以像JNDI通过DataSource一样在春季设置MongoDB实例? thx 解决方案 如果您的意思是像JDBC访问的常规RDBMS一样 其他解决方案 是的,当您可以创建自己的JNDI工厂时,为什么要依靠Elses代码? 只需创建一个实现javax.naming.spi.ObjectFactory的类,并从JNDI上下文中提取Mongo,我就将其配置为Spring Data-Mongo Mongotemplate对象. public class CustomMongoJNDIFactory implements ObjectFactory { public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable environment) throws Exception { validateProperty(obj
警告:Java的新手 我有一个简单的Netbeans项目 - 我想了解与来自PHP的DB互动,我以为我会和一个在计算机上运行的本地互动. 许多示例说使用initialContext()对象来参考数据库资源. 遵循示例后,我得到了以下例外 - 许多Google的东西指向一些.xml文件 - 我不知道或者它在Netbeans项目中的存在?我目前没有使用Web服务器,所以不使用Tomcat或类似的东西,只是本地Java程序可以做到这一点,我怀疑这可能是问题所在.任何人都可以阐明这一点吗? Exception thrown 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
我在Netbeans 7.2.1中拥有Java EE应用程序.尝试部署它(构建结束确定),我在tomcat日志中获得错误: Caused by: javax.naming.NameNotFoundException: Name java:comp is not bound in this Context at org.apache.naming.NamingContext.lookup(NamingContext.java:770) at org.apache.naming.NamingContext.lookup(NamingContext.java:153) at javax.naming.InitialContext.lookup(InitialContext.java:392) at org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:154) a
我在JBOSS服务器中部署了一个ActiveMQ代理. ActiveMQ被部署为放置在JBOSS独立/部署存储库中的RAR文件. 我的JBOSS中也将另一个项目部署为EAR文件. 最后一个是在我的JBOSS中暴露了一些EJB对象. 我试图从放入ActiveMQ RAR文件中的JAR文件中获取EJB.当我将客户端连接到经纪人时,将在罐子中放置一个类. 这就是我尝试将EJB在JAR文件中获取的方式: Context ctx; Properties jndiProps = new Properties(); jndiProps.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); jndiProps.put("jboss.naming.client.ejb.context", true); ctx = new InitialContext(jndiProps); Ctx.loo