2008-05-07

Client如何访问Glassfish 提供的远程EJB

关键字: glassfish
EJB所有返回值必须实现 Serializable接口,否则会报些莫名其妙的错误.
并把 Glassfish 的 appserv-rt.jar 和 javaee.jar 包 客户程序的类路径

@Stateless(mappedName="ejb/MainActionJNDI")//远程JNDI
@Name("MainAction")

@Interceptors({org.jboss.seam.ejb.SeamInterceptor.class})
@AutoCreate
public class MainActionBean implements MainAction,MainActionRemote {



package cn.astrocom.ejb.client;

import java.util.List;
import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;

import cn.astrocom.extseam.MainActionRemote;
import cn.astrocom.extseam.bo.MainGrid;

/**
 *
 * @author fanzhi_kong
 *
 */
public class MainActionClient {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		 
		try {
			Context jndiContext = getInitialJNDIFileContext();
			// Context jndiContext = getInitialPropertiesContext();
			/*
			 * 2.0 Object ref = jndiContext.lookup("ejb/MainActionJNDI");
			 * MainActionRemote mainAction = (MainActionRemote)
			 * PortableRemoteObject .narrow(ref, MainActionRemote.class);
			 */
			// 3.0
			MainActionRemote mainAction = (MainActionRemote) jndiContext
					.lookup("ejb/MainActionJNDI");
 
		} catch (Exception ne) {
			ne.printStackTrace();
		}

	}

	// JNDI上下文 方式一
	public static Context getInitialPropertiesContext()
			throws javax.naming.NamingException {

		Properties props = new Properties();
		props.setProperty("java.naming.factory.initial",
				"com.sun.enterprise.naming.SerialInitContextFactory");
		props.setProperty("java.naming.factory.url.pkgs",
				"com.sun.enterprise.naming");
		props.setProperty("java.naming.factory.state",
				"com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");

	    //EJB容器的ip
		props.setProperty("org.omg.CORBA.ORBInitialHost", "172.16.140.103");

       //EJB容器端口,默认为:3700
		props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");

		InitialContext ic = new InitialContext(props);

		return ic;
	}

	/**
	 * JNDI上下文 方式二读配置文件 文件为:jndi.properties
	 *
	 * @return
	 * @throws javax.naming.NamingException
	 */
	public static Context getInitialJNDIFileContext()
			throws javax.naming.NamingException {

		return new InitialContext();

	}

}

# optional. Defaults to localhost. Only needed if web server is running
# on a different host than the appserver
org.omg.CORBA.ORBInitialHost=172.16.140.103

# optional. Defaults to 3700. Only needed if target orb port is not
# 3700.
org.omg.CORBA.ORBInitialPort=3700


java.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory
java.naming.factory.url.pkgs=com.sun.enterprise.naming
java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl
评论
发表评论

您还没有登录,请登录后发表评论

kong6001
  • 浏览: 6808 次
  • 性别: Icon_minigender_1
  • 来自: 广东广州
  • 详细资料
搜索本博客
存档
最新评论