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( CSPIDLSPID CorrelateID CmdFileURL );
        
    }

}
2.使用
        Thread t= new Thread( new CibnThread(CSPID,LSPID,CorrelateID,CmdFileURL, analyzeXMLService ));
        t.start();
        cacheRedisAction .putRedis(CorrelateID, CorrelateID);
0 0
原创粉丝点击