Skip to Main Content

Chinese

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

JNDI bind 的问题

702619Jul 2 2004 — edited Jan 26 2005
将 Object 绑定到JNDI时是否有限制?我将一个 java.awt.Poin 绑定时一切正常,但使用一个我自己定义的 Object 绑定时报错:

java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.io.InvalidClassException: failed to read class descriptor
at weblogic.rjvm.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:108)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:284)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:244)
at weblogic.jndi.internal.ServerNamingNode_812_WLStub.rebind(Unknown Source)
at weblogic.jndi.internal.WLContextImpl.rebind(WLContextImpl.java:137)
... 2 more
Caused by: java.io.InvalidClassException: failed to read class descriptor
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1505)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1435)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1626)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
at weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:119)
at weblogic.rjvm.MsgAbbrevInputStream.readObject(MsgAbbrevInputStream.java:112)
at weblogic.jndi.internal.RootNamingNode_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:108)
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:353)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:415)
at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)

源程序:


import java.awt.Point;
import java.io.Serializable;
import java.util.Properties;

import javax.naming.*;

public class JndiBindTest {

private static final String NAME = "test_point";

public static void main(String[] args) throws NamingException {
Context context =
getInitialContext("t3://localhost:7001", "system", "password");
System.out.println("-- bind java.awt.Point...");
context.rebind(NAME, new Point(1, 2));
System.out.println("-- bind test.jndi.MyPoint...");
context.rebind(NAME, new MyPoint(1, 2));
}

private static Context getInitialContext(
String url,
String user,
String password)
throws NamingException {
Properties properties = new Properties();
properties.put(
Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
properties.put(Context.PROVIDER_URL, url);
if (user != null) {
properties.put(Context.SECURITY_PRINCIPAL, user);
properties.put(
Context.SECURITY_CREDENTIALS,
password == null ? "" : password);
}
return new InitialContext(properties);
}

};

class MyPoint implements Serializable {
int x;
int y;
MyPoint(int x, int y) {
this.x = x;
this.y = y;
}

};
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Feb 23 2005
Added on Jul 2 2004
7 comments
2,155 views