象都扩展自 Object 类,所以可 以将字符串值传递给 add() 方法。如果某些属性是多值的,那么可以多次调用属性的 add() 方法来提供 必要的值。
步骤 3D. 创建属性集合
您已经有了所有属性,现在需要将它们放入 Attribute 对象集合中。JNDI 提供了一个叫做 Attributes 的接口,并在叫做 BasicAttributes 的类中提供了该接口的基本实现。您可以实例化一个 BasicAttributes 对象,并多次调用对象的 put() 方法,将所有 Attribute 对象(一次一个地)放入集 合中。
如 清单 4 的步骤 4 所示,接下来将调用带有三个参数的 bind() 方法。带有三个参数的 bind() 方 法与 清单 1 中使用的带有两个参数的该方法类似,第三个参数是刚刚创建的属性集合。
应用程序 3. 存储编组的 Java 对象
在存储 Java 对象的最后这个练习中,我将介绍如何存储编组的 Java 对象,第 1 部分的 “表示编 组 Java 对象” 小节中已经简要讨论过它。
您打算以编组形式存储的 Java 对象应该是可序列化的(就像在 清单 1 的步骤 3 中创建的可序列化 的 MessagingPreferences 对象)。为了进行演示,我采用了同一个 MessagingPreferences 对象来演示 如何编组对象并将它存储在 ApacheDS 中。
首先请参见清单 5 中的 StoreAlicePreferencesInMarshalledForm 应用程序,它演示了在 ApacheDS 中存储已编组 Java 对象的所有步骤:
清单 5. StoreAlicePreferencesInMarshalledForm
public class StoreAlicePreferencesInMarshalledForm {
public StoreAlicePreferencesInMarshalledForm ()
{
try {
//------------------------------------------
//Step1: Setting up JNDI properties for ApacheDS
//------------------------------------------
InputStream inputStream = new FileInputStream ( "ApacheDS.properties");
Properties properties = new Properties();
properties.load(inputStream);
properties.setProperty("java.naming.security.credentials", "secret");
//------------------------------------------
//Step2: Fetching a DirContext object
//------------------------------------------
DirContext ctx = new InitialDirContext(properties);
//---------------------------------------------
//Step3: Instantiate a Java Object
//---------------------------------------------
MessagingPreferences preferences = new MessagingPreferences();
MarshalledObject mObj= new MarshalledObject(preferences );
//--------------------------------------------
//Step4: Storing Java object in ApacheDS
//--------------------------------------------
String bindContext = "cn=marshalledPreferences,uid=alice,ou=users";
ctx.bind( bindContext, mObj);
} catch (Exception e) {
System.out.println("Operation failed: " + e);
}
}
public static void main(String[] args) {
StoreAlicePreferencesInMarshalledForm storeAlicePref =
new StoreAlicePreferencesInMarshalledForm();
}
}
J2SE 将内 |