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

这里au申请信用卡的功能,这里我们用ejb远程方法调用来完成。
首先根据配置文件里面的定义
[quote]<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> [/quote]


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


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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值