Tag: jndi

用Java更改AD用户过期密码

我正在使用JNDI来更改LDAP用户的密码。 在大多数情况下(当用户的密码未过期时)此代码可以正常工作: public InitialLdapContext connect(String url, String securityPrincipal, String password) throws AuthenticationException, NamingException { System.setProperty(“javax.net.ssl.trustStore”, truststore); Properties env = new Properties(); env.put(Context.INITIAL_CONTEXT_FACTORY, “com.sun.jndi.ldap.LdapCtxFactory”); env.put(Context.PROVIDER_URL, url); env.put(Context.SECURITY_PRINCIPAL, “EE\\” + securityPrincipal); env.put(Context.SECURITY_CREDENTIALS, password); env.put(Context.SECURITY_PROTOCOL, “ssl”); env.put(“java.naming.ldap.version”, “3”); env.put(Context.REFERRAL, “follow”); return new InitialLdapContext(env,null); } 但是当密码过期的用户尝试更改密码时,我的应用会抛出: Exception: javax.naming.AuthenticationException: [LDAP: error code 49 – 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, […]

带有mysql DataSource的javax.naming.NoInitialContextException

试图连接到MySQL数据库 MysqlDataSource mysqlDs = new MysqlDataSource(); Properties prop = new Properties(); String mysqlDataSourceDriver = “com.mysql.jdbc.jdbc2.optional.MysqlDataSource”; Properties properties = new Properties(); properties.put(Context.INITIAL_CONTEXT_FACTORY, mysqlDataSourceDriver); properties.put(Context.PROVIDER_URL , “jdbc:mysql://localhost:3306/database”); Context ctx = new InitialContext(prop); ctx.bind(“jdbc/wczasy”, mysqlDs); 和堆栈跟踪: 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,Spring Project以使用JNDI数据源

我有一个从命令行运行的Java项目。 它正在使用Spring。 目前我的项目是mySQL。 使用可以从下面的config.xml中看到 我的公司要求我将项目从使用MySQL改为使用JNDI数据源。 下面是我的java代码,你可以看到使用jdbcTemplate: public class DisasterReliefMySQLImpl extends JdbcTemplate implements DisasterReliefMySQL { private static Log log = LogFactory.getLog(DisasterReliefMySQLImpl.class .getName()); String querySQL; int counter = 0; public int getCounter() { return counter; } private String getQuerySQL() { return querySQL; } private void setQuerySQL(String querySQL) { this.querySQL = querySQL; } DisasterReliefMySQLImpl(DataSource ds) { super(ds); } […]

我可以使用ObjectChangeListener来监听任何对象的更改吗?

我有一个名为x的Integer ; 如果它改变了,那么我想在GUI中更新我的表。 要听“x”我试过了 ChangeEvent y = new javax.swing.event.ChangeEvent(x); 我实现了javax.naming.event.ObjectChangeListener : class HDIManagementView extends FrameView implements ObjectChangeListener, ActionListener, TableModelListener { 并重写objectChanged方法来更新我的表。 没啥事儿 public void objectChanged(javax.naming.event.NamingEvent name){ //gets which status Object y=name.getChangeInfo(); String m=y.toString(); tableModel.setValueAt(y, 0, 0); }` 如果我改变“x”,那么我的表中没有任何变化。 我做错了什么? 第二个问题是,x只能通过值调用。 我只能从我的数据库或我的属性文件中获取x。 当数据库发生更改时,x无法理解它是否发生更改即使侦听器侦听也是如此。 我所做的只是听y等于x。 当x改变时y不理解,因为x不是由referens调用。 我能做什么?

通过Java客户端连接Azure服务总线

我试图从Java客户端连接Azure服务总线与AMQP协议 我按照以下链接中的说明操作: http://azure.microsoft.com/en-us/documentation/articles/service-bus-java-how-to-use-jms-api-amqp/ 1)在Azure门户中创建服务总线,名称空间为“ availo ”,队列名为“ queue1 ” 2)从服务总线连接信息我得到以下内容: SharedAccessKeyName = RootManageSharedAccessKey SharedAccessKey = {}键 3)为JNDI查找创建“servicebus.properties”文件 connectionfactory.SBCF = amqps://RootManageSharedAccessKey:encoded(key)@availo.servicebus.windows.net queue.QUEUE = queue1 4)下面是我的简单java主应用程序,在类路径中包含所有必需的jar(qpid)。 public static void main(String[] args) { try { Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, “org.apache.qpid.amqp_1_0.jms.jndi.PropertiesFileInitialContextFactory”); env.put(Context.PROVIDER_URL, “C:\\Users\\Assaf-PC\\Documents\\GitHub\\availo\\rest-api\\src\\main\\resources\\servicebus.properties”); Context context = new InitialContext(env); // Lookup ConnectionFactory and Queue ConnectionFactory cf = (ConnectionFactory) context.lookup(“SBCF”); […]

使用Jet的JNDI查找失败与MySQL建立JDBC连接池?

我正在使用带有标准MySQL连接器API的Jetty 9.2(嵌入式),我对如何设置它感到困惑。 目前,我在我的web.xml文件中有这个: <webapp … JDBC Data Source jdbc/DataSource javax.sql.DataSource Container …这在我的jetty-env.xml中: jdbc/DataSource jdbc:mysql://localhost:3306/DBName user pass …以及此代码初始化: Context envCtx = (Context) new InitialContext().lookup(“java:comp/env”); DataSource datasource = (DataSource) envCtx.lookup(“jdbc/DataSource”); 当我尝试启动服务器时,我收到错误javax.naming.NameNotFoundException; remaining name ‘jdbc/DataSource’ javax.naming.NameNotFoundException; remaining name ‘jdbc/DataSource’ 。 我已经在代码初始化中尝试了很多不同的字符串变体,比如删除了InitialContext对象上的lookup调用,但我只是不断地使用不同的name值来获取相同错误的变体。 这两个xml文件都位于我的/WAR/WEB-INF目录中。 我看过很多以前的问题和教程,博客等,但我无处可去。

使用JNDI在Tomcat中共享servlet会话对象和数据

在过去的几周里,我一直在寻找在两个上下文/战争文件之间共享对象的解决方案。 有很多种方法可以做,其中一种是JNDI。 我对Tomcat中使用的JNDI不太熟悉,所以想澄清一些问题: 基本上我有一个对象的实例,它将为多个上下文/应用程序提供以下服务 检查用户是否已登录 检查用户的会话是否有效 登录用户 – 包括记录登录详细信息 注销用户 – 删除会话 每个应用程序将在处理任何请求之前调用此对象以validation用户。 我不明白的是如果对象存储在JNDI上,该对象将如何工作。 我已经看到了一些如何在Tomcat中使用JNDI的示例,但99%的示例显示了如何配置JDBC数据源。 对象在JNDI中的确切初始化程度。 例如,Tomcat文档中的以下配置显示了JDBC的配置 在我的情况下,我将如何做类似的事情,最重要的是,如何在将对象放入JNDI树之前初始化该对象。 一旦它在JNDI树上,它是如何更新的? 我想我想要的是在Tomcat中使用JNDI的简单示例,但不是数据库连接,而是服务提供者类型对象。 我一直在阅读本教程http://docs.oracle.com/javase/tutorial/jndi/ops/bind.html,但它更侧重于LDAP命名目录,这并没有真正帮助。 编辑 好的,我确实在上面列出的教程中找到了一个示例,它显示了如何将对象“绑定”到JNDI树中。 class SerObj { public static void main(String[] args) { // Set up environment for creating initial context Hashtable env = new Hashtable(11); env.put(Context.INITIAL_CONTEXT_FACTORY, “com.sun.jndi.ldap.LdapCtxFactory”); env.put(Context.PROVIDER_URL, “ldap://localhost:389/o=JNDITutorial”); try { // Create the initial […]

如何在spring中覆盖JndiObjectFactoryBean并在java中设置解密密码

我在tomcat中有一个数据源,其密码是使用某种算法加密的,我想在建立与DB的连接时解密。 以下是我的春季配置代码 <!– –> 上面的bean是一个扩展JndiObjectFactoryBean的自定义bean public class EncryptedDataSource extends JndiObjectFactoryBean{ … } 我该怎么做才能获得加密密码并将其设置回来。 我有我的解密算法,但我不确定哪个超类方法会获取我可以重新设置的密码。 请建议,我有搜索并尝试了很多。

问题配置JBoss使用JNDI

我试图在我的JBoss上运行的应用程序中使用JNDI绑定到数据库的连接。 我做了以下事情: 我创建了数据源文件oracle-ds.xml ,用相关的xml元素填充它: bilby … 并将其放在文件夹\ server \ default \ deploy中 添加了相关的oracle jar文件 比我在我的申请表中所做的: JndiObjectFactoryBean factory = new JndiObjectFactoryBean(); factory.setJndiName(“bilby”); try{ factory.afterPropertiesSet(); dataSource = factory.getObject(); } catch(NamingException ne) { ne.printStackTrace(); } 这会导致错误: javax.naming.NameNotFoundException:bilby没有绑定 然后在发生此错误后的输出中我看到了这一行: 18:37:56,560 INFO [ConnectionFactoryBindingService]绑定ConnectionManager’jb oss.jca:service = DataSourceBinding,name = bilby’到JNDI名称’java:bilby’ 那么我的配置问题是什么? 我认为可能是JBoss首先加载并运行我的应用程序的.war文件,然后才加载包含我的数据源定义的oracle-ds.xml。 问题是它们都位于同一个文件夹中。 有没有办法定义加载它们的优先级,或者这可能根本不是问题。 任何想法?

ActiveMQInitialContextFactory与NamingContextFactory

我正在创建一个java企业应用程序,它使用activemq将消息发送到独立的队列代理。 我目前通过jndi查找维护对长期资源的访问,这非常有效。 我想继续使用ActiveMQ连接工厂和队列连接工厂的这种模式,但是在amq文档中它指定我的jndi.properties应该具有: java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory 而默认的jndi.properties(适用于我的简单对象和外观查找具有: java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory 我可以和另一个一起使用吗? 我能以某种方式拥有两个jndi.properties文件或两个初始上下文吗? 此问题显示如何通过jndi配置activemq。 我希望他们能很好地一起玩。