Tag: jndi

Jetty 7:为Start.java配置JNDI

继Wicket 1.5领先后,我将一个项目从Jetty 6.1.25转换为7.5.0.v20110901。 我现有的Start.java包含以下设置,我用它来配置JNDI: EnvConfiguration envConfiguration = new EnvConfiguration(); URL url = new File(“src/main/webapp/WEB-INF/jetty-env.xml”).toURI().toURL(); envConfiguration.setJettyEnvXml(url); bb.setConfigurations(new Configuration[]{new WebInfConfiguration(), envConfiguration, new org.mortbay.jetty.plus.webapp.Configuration(), new JettyWebXmlConfiguration(), new TagLibConfiguration()}); 然后我的jetty-env.xml有以下内容: jdbc/myapp com.mysql.jdbc.Driver jdbc:mysql://localhost/myapp?characterEncoding=utf8 username password 这在Jetty 6中运行得很好,但在7中, org.mortbay.jetty.plus.webapp.Configuration似乎不存在(或者我可能错过了一个Jar)。 有人可以给我一些关于如何使用Jetty 7配置JNDI的指导吗?

如何使JNDI名称与GlassFish和WildFly兼容

我正在开发Java EE 7应用程序,并且要求将应用程序部署到运行GlassFish 4.0或WildFly 8.1.0的应用程序服务器上。 我遇到的问题是GlassFish和WildFly对JNDI名称使用略有不同的格式,但我看不出如何使我的应用程序兼容两者。 在GlassFish中,我的persistence.xml文件引用数据源jdbc / myDataSouce,但在WildFly中,数据源需要是java:/ jdbc / myDataSource。 对于使用@Resource注释的类也是如此。 在GlassFish中,使用JavaMail的类的注释将是@Resource(name =“mail / myMailSession”),但要部署到WildFly,这需要是@Resource(name =“java:mail / myMailSession”)。 我知道我可以解压缩EAR和JAR文件以手动编辑文件,例如persistence.xml,但我不能对已经使用@Resource注释的类执行此操作。 有没有办法可以将我的编译应用程序部署到GlassFish和WildFly上,而无需维护两个不同版本的代码? 我假设答案可能取决于特定于应用程序的部署描述符,但我找不到任何涵盖这两种情况的示例。 有人能指出我正确的方向吗?

javax.naming.CommunicationException:简单绑定失败

当尝试使用简单的LDAP应用程序连接到LDAP服务器时,我收到一条错误,其中显示“简单绑定失败”。 我假设这与某种BIND有关。 我在其中一个属性文件中有一个绑定属性用于不同的应用程序,但我不知道如何将该属性传递给该程序。 我是否需要添加更多详细信息? 码 import javax.naming.directory.*; import javax.naming.*; import java.util.Vector; import java.util.Enumeration; import java.util.Properties; public class SearchLDAP { public static void main(String[] args) { String base = “”; String filter = “(objectclass=*)”; Properties env = new Properties(); env.put(DirContext.INITIAL_CONTEXT_FACTORY,”com.sun.jndi.ldap.LdapCtxFactory”); env.put(DirContext.PROVIDER_URL,”ldaps://misguided.com.au:343″); try { System.out.println(“11”); DirContext dc = new InitialDirContext(env); System.out.println(“22”); SearchControls sc = new SearchControls(); sc.setSearchScope(SearchControls.OBJECT_SCOPE); […]

javax.naming.NameNotFoundException

我正在使用JBoss5 Container运行ejb的示例。 我在这里使用一个例子(第一部分) 。 在示例中,我在JBoss中部署了bean,在Tomcat中部署了一个应用程序(从JBoss访问bean)。 我在tomcat服务器的屏幕上收到错误 javax.naming.NameNotFoundException:greetJndi未绑定 (greetJndi是jboss.xml文件中的jndi-name)是否有任何特定的目录结构要在JBoss中部署? 谢谢

Glassfish v3 / JNDI入门无法找到问题!

我一直在尝试从Java应用程序客户端调用EJB的方法时遇到问题。 这是代码。 EJB远程接口 package com.test; import javax.ejb.Remote; @Remote public interface HelloBeanRemote { public String sayHello(); } EJB package com.test; import javax.ejb.Stateless; @Stateless (name=”HelloBeanExample” , mappedName=”ejb/HelloBean”) public class HelloBean implements HelloBeanRemote { @Override public String sayHello(){ return “hola”; } } 主类(另一个项目) import com.test.HelloBeanRemote; import javax.naming.Context; import javax.naming.InitialContext; public class Main { public void runTest()throws Exception{ Context […]

如何在context.xml中存储字符串值

我想将连接URL存储在我的Tomcat应用程序的JNDI绑定中。 由于Tomcat使用context.xml进行JNDI资源定义,因此我需要弄清楚在context.xml存储String(或多个连接的多个字符串)的context.xml 。 我这样做的原因是我可以为不同的环境定义不同的字符串,并通过JNDI加载它们。 通常,我看到这样的条目: 这真的很简单: 如果是这样, 我在哪里实际存储String值?!?! 如果它不正确,那么我在context.xml存储的正确方法是什么,例如“ amqp:5272//blah.example.com&param1=4 ”,这样我就可以这样查找: Context ctx = new InitialContext(); String connectionURL = (String)ctx.lookup(“myConnectionURL”); 提前致谢!

OSGI JNDI是否允许与来自非OSGI代码的JNDI调用共存?

OSGI Enterprise Release 5规范的第126章提到了兼容性: “支持Java SE和Java EE客户端使用的传统JNDI编程模型。” 和使用OSGI不知道的代码: “不知道OSGi的客户端和JNDI上下文提供程序使用静态方法连接到JRE JNDI实现.InitialContext类提供从提供程序访问Context的权限,提供程序使用静态NamingManager方法进行对象转换并查找URL上下文。传统模型不了解OSGi,因此只有在管理这种缺乏OSGi意识的后果时才能可靠地使用。“ 但是我不清楚这个文本是仅适用于在OSGI包内执行的“遗留”代码,还是OSGI容器外部的代码,在OSGI容器嵌入应用程序的情况下。 在嵌入方案中,OSGI容器外部和内部可能存在执行JNDI调用的应用程序代码,并且当它们在同一JVM中执行时,它们将共享JNDI实现。 问题:在嵌入式OSGI容器中运行的OSGI JNDI实现是否允许容器外部的OSGI无意识代码像往常一样执行其JNDI调用,或者是否需要移植到“OSGI-awareness”? 使用Apache Karaf 2.3.0(使用Apache Aries JNDI 1.0.0)自己尝试这个似乎不起作用,因为Apache Aries需要JNDI客户端调用来自OSGI包。 部分堆栈跟踪: javax.naming.NoInitialContextException: The calling code’s BundleContext could not be determined. at org.apache.aries.jndi.OSGiInitialContextFactoryBuilder.getInitialContext(OSGiInitialContextFactoryBuilder.java:46) at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684) at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307) at javax.naming.InitialContext.init(InitialContext.java:242) at javax.naming.InitialContext.(InitialContext.java:192) 问题:这是正确的行为,还是我可以参考的规范中有一部分违反了此限制?

了解JNDI

JNDI就像类固醇的地图吧? 我使用键来查找对象的引用。 什么是InitialContext? 我似乎没有得到这个想法。

如何从tomcat webapp中的context.xml文件获取资源?

这是我的context.xml文件: … … 我已经尝试使用ServletContext.getResource(java.lang.String)和资源名称(“jdbc / MyDatasource”),但Tomcat抱怨该名称不以’/’开头。 我也试过“/ jdbc / MyDatasource”,但这次它返回null。 我主要需要jdbcUrl与数据库服务器进行连接检查 (查看服务器是否在线且可操作)。

如何接受JNDI / LDAP连接的自签名证书?

我需要通过SSL连接到LDAP目录。 在非生产环境中,我们使用自签名证书,当然,这些证书无法通过以下方式validation: javax.naming.CommunicationException: simple bind failed: ldapserver:636 [Root exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target] at com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:197) at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2694) at com.sun.jndi.ldap.LdapCtx.(LdapCtx.java:293) at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:175) at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:193) at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:136) at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:66) at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667) at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288) at javax.naming.InitialContext.init(InitialContext.java:223) at javax.naming.ldap.InitialLdapContext.(InitialLdapContext.java:134) 我知道如何使用自定义信任管理器进行启用SSL的连接 ,但是不知道如何使用连接JNDI API的连接,而我不管理实际的连接。 也就是说,以下标准设置在哪里可以插入信任管理器? 提前致谢。 Hashtable env […]