CIBN总结
来源:互联网 发布:淘宝基础版导航栏全屏 编辑:程序博客网 时间:2024/06/07 15:27
使用到的技术及其相关框架总结:
本次项目是给国广东方提供接口的项目,主要实现的功能,根据cis和cps传过来的xml链接地址,解析xml,然后保存到数据库相关表。webservice接口使用了开源Services框架--cxf,项目框架使用了spring3.2.11,xml使用了dom4j版本1.6.1解析,数据库框架利用jdbc自己封装的框架,数据库使用的是MySQL,使用了redis作为缓存,利用junit单元测试,使用soap协议给国广东方发送解析信息,使用了多线程,利用maven进行项目管理。
一、webService框架cxf 1.在pom.xml文件中引入包,如:
< dependency>
< groupId> org.apache.cxf </groupId >
< artifactId> cxf- rt-frontend- jaxws</ artifactId >
< version> 3.0.2</ version >
</ dependency>
2.spring.xml文件中配置cxf文件和webservice服务类名,如:
< context:annotation-config ></context:annotation-config >
<import resource ="classpath:META-INF/cxf/cxf.xml" />
<import resource ="classpath:META-INF/cxf/cxf-servlet.xml" />
<context:component-scan base-package ="com.**.manager.*" ></ context:component-scan>
<jaxws:endpoint id= "mange" implementor ="#CSPRequest" address= "/mange" />
CSPRequest为接口实现类名,mange为地址名,如接口地址为:http://127.0.0.1:8080/cibnManager/mange?wsdl
3.webservice接口ICSPRequest类定义,如
@WebService (targetNamespace="iptv" ,portName= "ctms")//ns为iptv,port binding name ctms
public interface ICSPRequest {
public CSPResult ExecCmd(@WebParam (name="CSPID" ) String CSPID, @WebParam (name="LSPID" ) String LSPID,@WebParam (name="CorrelateID" ) String CorrelateID,@WebParam (name="CmdFileURL" ) String CmdFileURL);
}//@WebParam 显示参数名字
4.webservice接口实现类CSPRequest类定义,如
@WebService (targetNamespace="iptv" ,portName= "ctms",serviceName= "CSPRequestService" )//ns 、 portname和接口定义成一致
@RespectBinding (enabled = true)
@Service
public class CSPRequest implements ICSPRequest{
@Autowired
private AnalyzeXMLService analyzeXMLService ;
@Autowired
private CacheRedisAction cacheRedisAction ;
@WebResult (name= "CSPResult" )
@Override
public CSPResult ExecCmd(String CSPID, String LSPID, String CorrelateID,
String CmdFileURL) {
二、解析xml
XMLStr:将xml文件转化成string
Document doc = DocumentHelper.parseText(xmlStr) ;
Element root = doc.getRootElement();
Element objs = root.element("Objects" );
或者:
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File("series.xml" ));
Element root = document.getRootElement();
Element objs = root.element("Objects" );
三、redis
<!-- redis配置 -->
<bean id= "jedisConnectionFactory"
class= "org.springframework.data.redis.connection.jedis.JedisConnectionFactory" >
<!-- <property name="hostName" value="183.136.202.147"></property> -->
< property name= "hostName" value ="127.0.0.1" ></ property>
< property name= "port" value ="6379" ></ property>
</bean >
<!-- redis template -->
<bean id= "redisTemplate" class ="org.springframework.data.redis.core.RedisTemplate" >
< property name= "connectionFactory" ref ="jedisConnectionFactory" ></ property>
</bean >
@Component
public class CacheRedisAction {
@Resource(name= "redisTemplate" )//与配置的名字一样
private RedisTemplate<String,String> redisTemplate ;
@Resource(name= "redisTemplate" )
private RedisTemplate<String,Object> redisCommonTemplate ;
四、webservice客户端
1,创建服务
String ns = "iptv" ;//ns
try {
URL url= new URL("http://127.0.0.1:8080/cibnManager/CSPRequest1?wsdl" );//wsdl
// URL url=new URL("http://183.136.202.147:83/cibnInterface/mange?wsdl");
QName qname= new QName(ns,"CSPRequestService" );//CSPResponseService修改
Service service=Service.create(url,qname);//创建服务
// 2,创建 Dispicathc
Dispatch<SOAPMessage> dispatch=service.createDispatch(new QName("iptv" ,"ctms" ),// ctms binding name
SOAPMessage. class , Service.Mode.MESSAGE );
// 3,创建消息
SOAPMessage message=MessageFactory.newInstance().createMessage();
SOAPBody body =message.getSOAPPart().getEnvelope().getBody();
SOAPElement ele=body.addChildElement(new QName("iptv" ,"ExecCmd" ,"nn" ));//iptv:ns ExecCmd对应的方法
ele.addChildElement("CSPID" ).setValue( "CIBN_CIS");//设置对应参数的值
ele.addChildElement("LSPID" ).setValue( "CIBN_JH");
ele.addChildElement("CorrelateID" ).setValue( "20150528111");
ele.addChildElement("CmdFileURL" ).setValue( "http://114.247.94.21:80/hy/2015/05/26/9107_20150526123855.xml" );
message.writeTo(System. out );
SOAPMessage response=dispatch.invoke(message);//发送消息
NodeList nodeList=response.getSOAPBody().getChildNodes();
Node node=nodeList.item(0);
五、解析json数据
JSONObject json = JSONObject. fromObject(sJson);//把字符串转换成json对象
JSONObject jsonkk = json.getJSONObject("kanke" );//json对象中获取json对象
JSONArray array = jsonkk.getJSONArray("list" );//获取json数组
for (int i = 0; i < array.size(); i++) {
JSONObject jsonfinal = array.getJSONObject(i);
String id = jsonfinal.getString("id" );//获取字符串
map.put(id, id);
}
六、多线程
1定义:
public class CibnThread implements Runnable{
String CSPID;
String LSPID;
String CorrelateID;
String CmdFileURL;
AnalyzeXMLService analyzeXMLService ;
public CibnThread (String CSPID, String LSPID, String CorrelateID,
String CmdFileURL,AnalyzeXMLService analyzeXMLService){
this .CSPID =CSPID;
this .LSPID = LSPID;
this .CorrelateID = CorrelateID ;
this .CmdFileURL = CmdFileURL;
this .analyzeXMLService = analyzeXMLService;
}
@Override
public void run() {
System. out .println(CSPID );
System. out .println(LSPID );
System. out .println(CorrelateID );
System. out .println(CmdFileURL );
String result= analyzeXMLService.analyzeCibnInfo( CSPID, LSPID , CorrelateID , CmdFileURL );
}
}
2.使用
Thread t= new Thread( new CibnThread(CSPID,LSPID,CorrelateID,CmdFileURL, analyzeXMLService ));
t.start();
cacheRedisAction .putRedis(CorrelateID, CorrelateID);
0 0
- CIBN总结
- 总结
- 总结
- 总结
- 总结
- 总结!
- 总结
- 总结.
- 总结。
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- Ext配置对象
- hdu 5142 NPY and FFT
- hdu4135Co-prime 容斥原理水题
- 对开发者有益的网站
- Android ScrollView简单自动滚动问题总结
- CIBN总结
- error while loading shared libraries: xxx.so.x"错误的原因和解决办法
- iframe父页面随子页面高度的增加而增加
- Tessellation
- GuozhongCrawler系列教程 (3) PageProcessor详解
- hdu 2123 An easy problem
- Linux系统的在线求助man page 与info page
- 修改opencv源码的方法
- 【Cocos游戏实战】功夫小子第三课之过渡场景和开始菜单的实现