您的位置:首页 > 其它

CIBN总结

2015-06-08 18:09 651 查看
使用到的技术及其相关框架总结:
本次项目是给国广东方提供接口的项目,主要实现的功能,根据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>
[align=left] < groupId> org.apache.cxf </groupId >[/align]
[align=left] < artifactId> cxf- rt-frontend- jaxws</ artifactId >[/align]
[align=left] < version> 3.0.2</ version >[/align]
[align=left] </ dependency>[/align]
[align=left]2.spring.xml文件中配置cxf文件和webservice服务类名,如:[/align]

[align=left] < context:annotation-config ></context:annotation-config >[/align]
[align=left] <import resource ="classpath:META-INF/cxf/cxf.xml" />[/align]
[align=left] <import resource ="classpath:META-INF/cxf/cxf-servlet.xml" />[/align]
[align=left] <context:component-scan base-package ="com.**.manager.*" ></ context:component-scan>[/align]
[align=left] <jaxws:endpoint id= "mange" implementor ="#CSPRequest" address= "/mange" />[/align]
[align=left]CSPRequest为接口实现类名,mange为地址名,如接口地址为:http://127.0.0.1:8080/cibnManager/mange?wsdl[/align]
[align=left]3.webservice接口ICSPRequest类定义,如[/align]

@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);
[align=left]}//@WebParam 显示参数名字[/align]

[align=left]4.webservice接口实现类CSPRequest类定义,如[/align]

@WebService (targetNamespace="iptv" ,portName= "ctms",serviceName= "CSPRequestService" )//ns
、 portname和接口定义成一致
[align=left]@RespectBinding (enabled = true)[/align]
[align=left]@Service[/align]
public class CSPRequest implements
ICSPRequest{
[align=left] @Autowired[/align]
[align=left] private AnalyzeXMLService analyzeXMLService ;[/align]
[align=left] @Autowired[/align]
[align=left] private CacheRedisAction cacheRedisAction ;[/align]
[align=left] @WebResult (name= "CSPResult" )[/align]
[align=left] @Override[/align]
public CSPResult
ExecCmd(String CSPID, String LSPID, String CorrelateID,
[align=left] String CmdFileURL) {[/align]

[align=left]二、解析xml[/align]
[align=left] XMLStr:将xml文件转化成string[/align]

[align=left] Document doc = DocumentHelper.parseText(xmlStr) ;[/align]
[align=left] Element root = doc.getRootElement();[/align]
[align=left] Element objs = root.element("Objects" );[/align]
[align=left] 或者:[/align]

[align=left] SAXReader saxReader = new SAXReader();[/align]
[align=left] Document document = saxReader.read(new File("series.xml" ));[/align]
[align=left] Element root = document.getRootElement();[/align]
[align=left] Element objs = root.element("Objects" );[/align]
[align=left]三、redis[/align]

[align=left]<!-- redis配置 -->[/align]
[align=left] <bean id= "jedisConnectionFactory"[/align]
[align=left] class= "org.springframework.data.redis.connection.jedis.JedisConnectionFactory" >[/align]
<!-- <property name="hostName" value="183.136.202.147"></property>
-->
[align=left] < property name= "hostName" value ="127.0.0.1" ></ property>[/align]
[align=left] < property name= "port" value ="6379" ></ property>[/align]
[align=left] </bean >[/align]
<!-- redis template
-->
[align=left] <bean id= "redisTemplate" class ="org.springframework.data.redis.core.RedisTemplate" >[/align]
[align=left] < property name= "connectionFactory" ref ="jedisConnectionFactory" ></ property>[/align]
[align=left] </bean >[/align]

[align=left]@Component[/align]
public class CacheRedisAction
{

[align=left] @Resource(name= "redisTemplate" )//与配置的名字一样[/align]
[align=left] private RedisTemplate<String,String> redisTemplate ;[/align]
[align=left] [/align]
[align=left] @Resource(name= "redisTemplate" )[/align]
[align=left] private RedisTemplate<String,Object> redisCommonTemplate ;[/align]

[align=left]四、webservice客户端[/align]

[align=left] 1,创建服务[/align]
[align=left] String ns = "iptv" ;//ns[/align]
[align=left] try {[/align]
[align=left] URL url= new URL("http://127.0.0.1:8080/cibnManager/CSPRequest1?wsdl" );//wsdl[/align]
[align=left]// URL url=new URL("http://183.136.202.147:83/cibnInterface/mange?wsdl");[/align]
[align=left] QName qname= new QName(ns,"CSPRequestService" );//CSPResponseService修改[/align]
[align=left] Service service=Service.create(url,qname);//创建服务[/align]
[align=left]// 2,创建 Dispicathc[/align]
[align=left] [/align]
Dispatch<SOAPMessage> dispatch=service.createDispatch(new QName("iptv" ,"ctms" ),// ctms
binding name

SOAPMessage. class ,
Service.Mode.MESSAGE );
[align=left]// 3,创建消息[/align]
[align=left] SOAPMessage message=MessageFactory.newInstance().createMessage();[/align]
[align=left] SOAPBody body =message.getSOAPPart().getEnvelope().getBody();[/align]
SOAPElement ele=body.addChildElement(new QName("iptv" ,"ExecCmd" ,"nn" ));//iptv:ns
ExecCmd对应的方法
[align=left] ele.addChildElement("CSPID" ).setValue( "CIBN_CIS");//设置对应参数的值[/align]
[align=left] ele.addChildElement("LSPID" ).setValue( "CIBN_JH");[/align]
[align=left] ele.addChildElement("CorrelateID" ).setValue( "20150528111");[/align]
[align=left] ele.addChildElement("CmdFileURL" ).setValue( "http://114.247.94.21:80/hy/2015/05/26/9107_20150526123855.xml" );[/align]
[align=left] message.writeTo(System. out );[/align]
[align=left] SOAPMessage response=dispatch.invoke(message);//发送消息[/align]
[align=left] NodeList nodeList=response.getSOAPBody().getChildNodes();[/align]
[align=left] [/align]
[align=left] Node node=nodeList.item(0);[/align]
[align=left]五、解析json数据[/align]

[align=left] JSONObject json = JSONObject. fromObject(sJson);//把字符串转换成json对象[/align]
[align=left] JSONObject jsonkk = json.getJSONObject("kanke" );//json对象中获取json对象[/align]
[align=left] JSONArray array = jsonkk.getJSONArray("list" );//获取json数组[/align]
for (int i
= 0; i < array.size(); i++) {
[align=left] JSONObject jsonfinal = array.getJSONObject(i);[/align]
[align=left] String id = jsonfinal.getString("id" );//获取字符串[/align]
[align=left] map.put(id, id);[/align]
[align=left] }[/align]
[align=left]六、多线程[/align]
[align=left]1定义:[/align]

[align=left]public class CibnThread implements Runnable{[/align]

[align=left] String CSPID;[/align]
[align=left] String LSPID;[/align]
[align=left] String CorrelateID;[/align]
[align=left] String CmdFileURL;[/align]
[align=left] AnalyzeXMLService analyzeXMLService ;[/align]
[align=left] [/align]
public CibnThread (String
CSPID, String LSPID, String CorrelateID,
[align=left] String CmdFileURL,AnalyzeXMLService analyzeXMLService){[/align]
[align=left] this .CSPID =CSPID;[/align]
this .LSPID =
LSPID;
this .CorrelateID =
CorrelateID ;
this .CmdFileURL =
CmdFileURL;
this .analyzeXMLService =
analyzeXMLService;
[align=left] }[/align]
[align=left] [/align]
[align=left] @Override[/align]
public void run()
{
[align=left] System. out .println(CSPID );[/align]
[align=left] System. out .println(LSPID );[/align]
[align=left] System. out .println(CorrelateID );[/align]
[align=left] System. out .println(CmdFileURL );[/align]
[align=left] String result= analyzeXMLService.analyzeCibnInfo( CSPID, LSPID , CorrelateID , CmdFileURL );[/align]
[align=left] [/align]
[align=left] }[/align]

[align=left]}[/align]
[align=left]2.使用[/align]

[align=left] Thread t= new Thread( new CibnThread(CSPID,LSPID,CorrelateID,CmdFileURL, analyzeXMLService ));[/align]
[align=left] t.start();[/align]
cacheRedisAction .putRedis(CorrelateID,
CorrelateID);

[align=left][/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: