weblogic wlfullclient.jar


今天尝试着测试一个weblogic10.3 ejb使用独立客户端调用 ,发现尽管引入了weblogic.jar,可是仍然有J2EE的Class找不到


Exception in thread "main" java.lang.NoClassDefFoundError: weblogic/security/subject/AbstractSubject
     at weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFactory.java:117)
     at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
     at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)


客户端调用ejb代码如下:
----------------------------------------
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;


public class EjbClientDemo {


public static void main(String[] args) throws NamingException {

Hashtable env = new Hashtable();

env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
env.put(Context.PROVIDER_URL, "t3://localhost:7001");
env.put(Context.URL_PKG_PREFIXES, "weblogic.jndi");

Context ctx = new InitialContext(env);
Object obj = ctx.lookup("ejb.bm.bmCardPaymentService");
System.out.println(obj);
}
}
----------------------------------------
究其原因是因为在客户端代码里使用weblogic.jar,而10.3版本已经
不建议使用weblogic.jar了,新的客户端库支持为wlfullclient.jar,这个包需要自行生成,
如下:
----------------------------------------
1. cd $WL_HOME/server/lib
2. java -jar ../../../../modules/com.bea.core.jarbuilder_1.2.0.0.jar
如果不出意外,则上面的操作会在lib目录下生成wlfullclient.jar,将此包加入客户端程序的classpath中就可。
----------------------------------------
详见 http://forums.oracle.com/forums/thread.jspa?threadID=705919

你可能感兴趣的:(java)