java服务EJB开发文档.docx
《java服务EJB开发文档.docx》由会员分享,可在线阅读,更多相关《java服务EJB开发文档.docx(25页珍藏版)》请在冰点文库上搜索。
![java服务EJB开发文档.docx](https://file1.bingdoc.com/fileroot1/2023-6/28/44ead0b5-92a4-4992-9478-592404602735/44ead0b5-92a4-4992-9478-5924046027351.gif)
java服务EJB开发文档
(一)Weblogic12c的安装
1、解压wls1211_dev.zip到指定目录,参考:
(D:
\wls1211_dev)
2、设置系统环境变量JAVA_HOME,JAVA_VENDOR,MW_HOME
JAVA_HOME=D:
\Java\jdk1.6.0_19(jdk的安装目录)
MW_HOME=D:
\wls1211_dev(weblogic的解压目录)
JAVA_VENDOR=Sun
3、运行wls1211_dev下的configure.cmd
4、创建weblogic域,运行wls1211_dev下的wlserver/common/bin/config.cmd按提示界面进行默认配置
5、启动weblogic,打开http:
//localhost:
7001/console验证是否安装成功
6、配置数据源
7、点击部署,发布PMS_EAR项目
(二)Eclipse与weblogic集成
1、打开eclipse首选项Window---Preferences,选中Server下的RuntimeEnvironments,如下图所示
2、点击Add按钮,弹出NewServerRuntimeEnvironment面板,选中Oracle文件夹下的OracleWeblogicServer12c(12.1.1)
3、点击Next,选择WebLogichome和Javahome,点击Finish,完成配置
(三)EJB工程部署
1、先将PMS_EAR和PMS_SERVICE两个项目导入,选中PMS_EAR工程,点击右键选择RunAs下的RunOnServer
2、点击Next,选择Domaindirectory,勾选AlwaysstartWeblogicservcerindebugmode,点击Next直至Finish。
3、下图显示PMS_EAR已运行在WebLogicServer上。
4、控制台输出若有乱码,可以点击Run—RunConfigurations,将Common标签下的Encoding改为GBK。
5、在eclipse文件下的pulgins中加入服务插件然后在命令窗口直行eclipse–clean就行了
---------------------------------------------------------------------------------------------------------------------------------------
此处往下为管控组人员统一配置管理,开发人员禁止修改,只能查阅。
(四)EJB插件应用
第一步先建立数据应用服务器
用eclipse中的插件
选择第一个数据库维护。
点击添加弹出下面窗口
先点击连接测试按钮,看下连接是否通过,然后再点击ok完成。
第二步实体映射
用eclipse中的插件
选择第二个实体映射。
选中要映射的实体对象点击next。
选择实体存放的包路径,选择生成映射信息的xml文件后点击next
点击next
点击next
点击finish完成后就会自动生成实体对象。
第三步批量实体映射
批量实体映射比较方便多表同时映射实体对象,操作比上述简单,道理都是一样的。
第四步实体元数据维护
对上述生成的实体以及实体对应的xml文件进行维护操作。
第五步服务协议维护
创建服务协议,点击添加,进入编辑窗口
ID为前台调用服务时getServiceName()方法中映射的名称,ClassId为服务类中映射的名称,”!
”号前面的为服务名称,下面分别是设置服务的输入和输出参数列表,NumMin=1、NumMax=1,则为单个实体对象。
NumMin=0、NumMax=-1,则为实体对象集合(List)。
上述任务为管控组人员统一配置管理,开发人员禁止修改,只能查阅
第六步服务框架生成
用eclipse中的插件
,选择第六个服务框架生成。
在服务协议过滤框中输入需要编写的服务名称。
选中要编写的服务后点击next。
点击Browse选择服务路径,选择需要事务或者不需要事务后点击finish即可,然后编写相应的服务。
第七步需要关注的配置文件
在src\com\csg\client\config.properties,此文件为weblogic的配置文件。
CONTEXT_INITIAL_CONTEXT_FACTORY=weblogic.jndi.WLInitialContextFactory
CONTEXT_PROVIDER_URL=t3:
//localhost:
7001
CONTEXT_SECURITY_PRINCIPAL=weblogic
CONTEXT_SECURITY_CREDENTIALS=weblogic123
REMOTE_SERVICE_JNDI_NAME=SOAServiceConnector\#com.csg.service.xt.connector.IServiceConnector
改成自己本地的weblogic12的用户名和密码
在项目根目录下\db-config.xml,为数据库配置文件。
xmlversion="1.0"encoding="UTF-8"?
>
oracle.jdbc.driver.OracleDriver
sz_test
sz_test
jdbc:
oracle:
thin:
@10.210.15.6:
1521:
szdb
(五)正式开发服务步骤
服务会有两种:
一种是调用原子组件实现服务、另一种是调用非原子组件或业务组件实现服务。
调用原子组件:
AtomicCompUtil.getMainDSAtomicTool();用此工具类可以完成。
下面是详细实例代码。
/**
*文件名:
YK_XZYWZL-选择业务子类
*编写者:
谭亚平
*编写日期:
2012-05-19
*简要描述:
选择业务子类
*组件列表:
*调用原子组件查询业务子类参数
*********************修改日志**********************************
*修改人:
修改日期:
*修改内容:
*
*/
@Stateless(name="XZYWZLService",mappedName="XZYWZLService")
@Local(IBusinessService.class)
publicclassXZYWZLServiceimplementsIBusinessService{
/**输入输出参数常量定义**/
privatestaticfinalStringIN_PARAM="IN_FW_YKYWZLCS";
privatestaticfinalStringOUT_PARAM="OUT_FW_YKYWZLCS";
@Override
publicStringgetServiceVersion(){
return"1.0.0";
}
@Override
@TransactionAttribute(TransactionAttributeType.REQUIRED)
publicMaprunService(MaprequestParam)throwsSOAServiceException{
//获得输入参数
T_FW_YKYWZLCSywzlcs=(T_FW_YKYWZLCS)requestParam.get(IN_PARAM);
//进行输入参数校验
if(ywzlcs==null||"".equals(ywzlcs.getYwzlbh())){
//抛出异常,返回
throwServiceExceptionUtil.generateSOAServiceException("输入参数业务子类参数有误!
");
}
//设置输出参数
MapresultMap=newHashMap();
//引用原子组件,查询下级组织信息
try{
T_FW_YKYWZLCSfindYwzl=AtomicCompUtil.getMainDSAtomicTool().loadById(ywzlcs);
if(findYwzl!
=null){
resultMap.put(OUT_PARAM,findYwzl);
}else{
resultMap.put(OUT_PARAM,null);
}
}catch(DBExceptionex){
SOAServiceExceptionsoaServiceException=ServiceExceptionUtil.generateSOAServiceException(ex);
soaServiceException.setErrorMsg4Dev("调用原子组件查询业务子类参数时出错!
");
soaServiceException.setErrorLog(ex.getMessage());
throwsoaServiceException;
}
returnresultMap;
}
}
调用非原子组件或业务组件:
因需求需要调用非原子组件或业务组件,此时需要开发人员编写此服务需要的非原子组件或业务组件,规范规定sql语句只能出现在非原子组件或业务组件,所以非原子组件或业务组件会实现比原子组件更繁琐的功能,下面是详细实例代码。
服务代码:
/**
*文件名:
YK_CSHKHZRXXLBCK-初始化客户自然信息列表窗口
*编写者:
谭亚平
*编写日期:
2012-05-19
*简要描述:
初始化客户自然信息列表窗口
*组件列表:
*1)C_YK_CSHKHZRXXLBCKZJ-初始化客户自然信息列表窗口组件
*********************修改日志**********************************
*修改人:
修改日期:
*修改内容:
*
*/
@Stateless(name="CSHKHZRXXLBCKService",mappedName="CSHKHZRXXLBCKService")
@Local(IBusinessService.class)
publicclassCSHKHZRXXLBCKServiceimplementsIBusinessService{
/**输入输出参数常量定义**/
privatestaticfinalStringIN_PARAM="IN_FW_YKKHDABGXX";
privatestaticfinalStringOUT_PARAM_LIST_YKKHDABGXX="OUT_FW_YKKHDABGXX";
@Override
publicStringgetServiceVersion(){
return"1.0.0";
}
@Override
@TransactionAttribute(TransactionAttributeType.REQUIRED)
publicMaprunService(MaprequestParam)throwsSOAServiceException{
//获得输入参数
T_FW_YKKHDABGXXkhda=(T_FW_YKKHDABGXX)requestParam.get(IN_PARAM);
//进行输入参数校验
if(khda==null||"".equals(khda.getGzdbh())){
//抛出异常,返回
throwServiceExceptionUtil.generateSOAServiceException("输入参数客户变更信息有误!
");
}
//设置输出参数
MapresultMap=newHashMap();
//引用非原子组件,查询下级组织信息
CSHKHZRXXLBCKZJComcsh=newCSHKHZRXXLBCKZJCom();
ListkhdaList=csh.getCustomerChangeInfo(khda);
if(khdaList!
=null&&khdaList.size()>0){
resultMap.put(OUT_PARAM_LIST_YKKHDABGXX,khdaList);
}else{
resultMap.put(OUT_PARAM_LIST_YKKHDABGXX,null);
}
returnresultMap;
}
}
服务中出现的CSHKHZRXXLBCKZJComcsh=newCSHKHZRXXLBCKZJCom();则为调用此服务的非原子组件。
非原子组件代码:
/**
*文件名:
C_YK_CSHKHZRXXLBCKZJ-初始化客户自然信息列表窗口组件
*编写者:
谭亚平
*编写日期:
2012年5月19日
*简要描述:
*打开客户自然信息列表窗口时,初始化客户自然信息列表窗口
*组件列表:
*********************修改日志**********************************
*修改人:
修改日期:
*修改内容:
*/
publicclassCSHKHZRXXLBCKZJCom{
/**
*查询客户变更信息
*@paramkhda客户变更信息传入实体
*@returnT_FW_YKGZDJBXX-根据工作单编号查询客户变更信息
*/
publicListgetCustomerChangeInfo(T_FW_YKKHDABGXXkhda)throwsSOAServiceException{
try{
List
params.add(khda.getGzdbh());
//根据工作单编号查询客户变更信息
StringkhdaSql="SELECTBGXXBS,GZDBH,KHBH,KHMC,YDBZ,KHLXDM,JJLXDM,"+
"XYDJDM,XYFZ,JZDJDM,FXDJDM,VIPBZ,VIPDJDM,QYWZ,QYGM,QYJJ,ZCZBJ,"+
"ZCZJ,FRDB,JYFW,ZYCP,SCGY,CN,ZYYL,GYLY,XSE,XSQY,ZYBDXM,DFZQYCBBL,"+
"CYFLDM,DQBM,GDDWBSFROMFW_YKKHDABGXXWHEREGZDBH=?
";
DBTooldbTool=newDBTool();
ListkhdaList=dbTool.executeQuery(khdaSql,params,T_FW_YKKHDABGXX.class);
if(khdaList!
=null&&khdaList.size()>0){
returnkhdaList;
}
returnnull;
}catch(DBExceptionex){
//包装异常并填充错误信息
SOAServiceExceptionsoaServiceException=ServiceExceptionUtil.generateSOAServiceException("查询客户变更信息出错!
");
soaServiceException.setErrorMsg4Dev("根据工作单编号,调用dbTool.executeQuery()方法,查询客户变更信息出错!
");
soaServiceException.setErrorMsg4User("查询客户变更信息出错!
");
soaServiceException.setErrorLog(ex.getMessage());
throwsoaServiceException;
}
}
}