`

网银系统augcb申请信用卡ejb的应用

    博客分类:
  • EJB
 
阅读更多
这里au申请信用卡的功能,这里我们用ejb远程方法调用来完成。
首先根据配置文件里面的定义
引用
<connector name="EJB_Connector" type="com.xti.messaging.connector.EjbClientConnector">
           <property name="URL"    value="hosturl1\:22162,hosturl2\:22172" />
           <property name="ContextFactory"  value="com.ibm.websphere.naming.WsnInitialContextFactory"/>
           <property name="JNDI"                    value="ejb/Gateway" />
           <property name="Home"                value="com.xxbank.icc.acis.acisgateway.ejb.GatewayHome" />
           <property name="Remote"              value="com.xxbank.icc.acis.acisgateway.ejb.Gateway" />
</connector>

          

下面是客户端就是我们前端的实现:



public class EjbServiceLocator{
//根据以下方法我们就可以初始化 GatewayHome, 这是一个EJBHome 接口,我们客户端即JFP可以自己创建一个同包名的接口GatewayHome。
private Object getHomeObject(Properties prp) throws NamingException, ClassNotFoundException {
    Context ctx = new InitialContext(prp);//prp 会加载上面这个配置文件,JNDI获取上下文,JNDI的命名和定义在是服务器端。
    String strJndiName = prp.getProperty("JNDI");//通过上下文搜索这个EJB的实现对象群。
    Object obj  = ctx.lookup(strJndiName);   //得到对象。
    Object ejbHomeObject = PortableRemoteObject.narrow(obj, Class.forName(prp.getProperty("Home")));//初始化EJBHome的实现。
    return ejbHomeObject;
}


//有了EJBHome的实现对象后,我们可以调用create 来 初始化 EJB 远程session bean。
private Object retrieveRemoteObject(Properties prp) throws ...Exception{
...
Object ejbHomeObject = getHomeObject(prp);
Method createMethod = ejbHomeObject.getClass().getMethod("create", null);
Object remoteObject = createMethod.invoke(ejbHomeObject, null);//得到远程业务代理类的实现对象。这个实现对象是一个session bean,不过对我们jfp 是黑盒的。
...
return remoteObject;
}


public Object getRemoteObject(Properties prp) throws ...Exception{
...
remoteObject = retrieveRemoteObject(prp);
...
return remoteObject;
}





}



最终在以下客户端类中得到远程session bean的业务方法的返回值序列。
public class EjbClientConnector {

public Object[] sendObjects(String methodName, Object[] objects, Class[] methodParameters) throws ...Exception{
...
remoteObject = serviceLocator.getRemoteObject(this.prp);//远程session bean的实现对象。
...
remoteMethod = Class.forName(this.remote).getMethod(methodName, methodParameters);
remoteMethodResult = remoteMethod.invoke(remoteObject, objects);//调用session bean的业务方法。得到结果。
...
}


}



以下是定义在JFP端的远程home 和远程业务代理类接口。
package com.xxbank.ejb;

import java.rmi.RemoteException;
import java.util.HashMap;
import javax.ejb.EJBObject;

public abstract interface Gateway extends EJBObject
{
  public abstract HashMap processApp(HashMap paramHashMap)
    throws RemoteException, Exception;

  public abstract HashMap getAppStatus(HashMap paramHashMap)
    throws RemoteException, Exception;

  public abstract void fireEOD(int paramInt1, int paramInt2)
    throws RemoteException, Exception;

  public abstract HashMap getRecalcResponse(HashMap paramHashMap)
    throws Exception;

  public abstract HashMap getPResponse(HashMap paramHashMap)
    throws Exception;

  public abstract HashMap releaseLock(HashMap paramHashMap)
    throws Exception;

  public abstract void insertDetails(HashMap paramHashMap)
    throws Exception;
}


package com.xxbank.ejb;

import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;

public abstract interface GatewayHome extends EJBHome
{
  public abstract Gateway create()
    throws CreateException, RemoteException;
}
分享到:
评论
1 楼 zhangwei8607 2013-06-06  
:idea: 学习了

相关推荐

Global site tag (gtag.js) - Google Analytics