联通彩信网关编写内容
小弟今天开始尝试独立开发联通彩信网关前期准备:
文档:
中国联通
数字蜂窝移动通信网
多媒体消息业务开发规范
.jar文件
mail.jar,vassdk_soap.jar
测试软件
MMSCSimulation.exe
第一个问题,小弟导入开发.jar文件,vassdk_soap.jar,将文档《中国联通》中的示例代码复制到开发工具中,但是会出现错误,import com.cmcc.mm7.vasp.pdu.*;这个地方,当把import com.cmcc.mm7.vasp.pdu.*;修改成import com.huawei.mm7.vasp.pdu.*;这个时候错误消失。
我的第一个问题是:是不是我的vassdk_soap.jar这个包下的有问题,如果是下错了,正确的.jar包在哪里下。
当小弟修改完示例代码没有错误后,代码如下:
package com.zz.main;
//import from mms
import com.huawei.mm7.vasp.pdu.*;
import com.huawei.mm7.vasp.message.*;
import com.huawei.mm7.vasp.service.*;
import com.huawei.mm7.vasp.common.*;
import com.huawei.mm7.vasp.conf.*;
// import from jdk
import java.util.*;
import java.io.*;
public class MainTest extends MM7Receiver
{
public static HashMap transIDMap = new HashMap();
public MainTest(MM7Config config)
{
super.setConfig(config);
}
/**
* 处理Deliver消息,由子类实现
*
* @param request
* @return MM7VASPRes
*/
public MM7VASPRes doDeliver(MM7DeliverReq request)
{
// 打印请求消息
System.out.println("NormalReceiverTest > DeliverReq::");
System.out.println(request.toString());
// 构造响应消息
MM7DeliverRes deliverRes = new MM7DeliverRes();
deliverRes.setServiceCode("service code 000");
deliverRes.setStatus(1000);
deliverRes.setStatusText("statustext");
// 这个TransactionID保证MMSC能成功处理响应消息
deliverRes.setTransactionID(request.getTransactionID());
return deliverRes;
}
/**
* 处理DeliveryReport消息,由子类实现
*
* @param request
* @return MM7VASPRes
*/
public MM7VASPRes doDeliveryReport(MM7DeliveryReportReq request)
{
// 打印请求消息
System.out.println("NormalReceiverTest > DeliveryReport::");
System.out.println(request.toString());
//根据transID判断
if (transIDMap.containsKey(request.getTransactionID()))
{
System.out.println("Get Deliver.Req message, TransactionID: " +
request.getTransactionID());
// 构造响应消息
MM7DeliveryReportRes deliveryReportRes = new MM7DeliveryReportRes();
deliveryReportRes.setStatus(1000);
deliveryReportRes.setStatusText("delivery report text");
// 这个TransactionID保证MMSC能成功处理响应消息
deliveryReportRes.setTransactionID(request.getTransactionID());
//将消息从MAP中删除
transIDMap.remove(request.getTransactionID());
return deliveryReportRes;
}
else
{
System.out.println("Get error Deliver.Req message, TransactionID: " +
request.getTransactionID());
MM7VASPErrorRes errorRes = new MM7VASPErrorRes(3001,
"Error Deliver.Req message");
return errorRes;
}
}
/**
* 处理ReadReply消息,由子类实现
*
* @param reqeust
* @return MM7VASPRes
*/
public MM7VASPRes doReadReply(MM7ReadReplyReq request)
{
// 打印请求消息
System.out.println("NormalReceiverTest > ReadReply::");
System.out.println(request.toString());
// 构造响应消息
MM7ReadReplyRes readReplyRes = new MM7ReadReplyRes();
readReplyRes.setStatus(1000);
readReplyRes.setStatusText("status text...");
// 这个TransactionID保证MMSC能成功处理响应消息
readReplyRes.setTransactionID(request.getTransactionID());
return readReplyRes;
}
public static void main(String[] args)
{
System.setProperty("javax.xml.soap.MessageFactory", "com.sun.xml.messaging.saaj.soap.MessageFactoryImpl");
System.setProperty("javax.xml.soap.SOAPConnectionFactory", "com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnectionFactory");
//初始化配置参数
MM7Config mm7Config = new MM7Config("E:\\aa\\mm7Config.xml");
//启动一个接收线程
MainTest receiver = new MainTest(mm7Config);
receiver.setReceiver(receiver);
receiver.start();
MM7Sender sender = new MM7Sender(mm7Config); //创建MM7Sender对象
// 可以根据需要增加一个循环,自动发送
MM7SubmitReq req = new MM7SubmitReq();
//构造消息
req.setTransactionID("1000000");
req.setVASPID("52947");
req.setVASID("31900018");
req.setSender("3190001805"); // VASID + ServiceCode
req.addTo("1370000000");
req.setServiceCode("05");
req.setLinkID("9999");
req.setMessageClass("Personal");
req.setDate(new Date());
// req.setExpiry(10000000);
req.setDeliveryReport(true);
req.setReadReply(true);
req.setPriority( (byte) 0);
req.setReplyDeadline(new Date());
req.setSubject("This is submitReq");
req.setAdaptations(true);
req.setChargedParty(MMConstants.ChargedParty.SENDER);
req.setDistributionIndicator(true);
// 先构造一个媒体容器
MMContent mainContent = new MMContent();
mainContent.setContentType(MMConstants.ContentType.MULTIPART_RELATED);
mainContent.setContentID("bbbbbbbbbb");
req.setContent(mainContent);
// 构造一个媒体,此处添加的只是一个文本串
MMContent mmc = new MMContent();
mmc.setData(new String("wwwwwwwww").getBytes()); //添加内容体
mmc.setContentType("text/plain"); //设置内容体格式
mmc.setContentID("aaID");
mainContent.addSubContent(mmc); //将创建好的内容添加到消息
//将消息以TransID为主键保存,接收线程接收到递送报告时,再将该消息从map中删除。
transIDMap.put(req.getTransactionID(), req);
MM7Message rsp = sender.send(req);
if (rsp.getStatusCode() != MMConstants.RequestStatus.SUCCESS)
{
//发送失败处理
System.out.println("1,"+rsp.getStatusCode());
System.out.println(","+rsp.getStatusText());
}else{
System.out.println("2,"+rsp.getStatusCode()+","+rsp.getStatusText());
}
}
}
开始修改mm7Config.xml文件,修改后源代码如下:
<?xml version="1.0"?>
<vasp:MM7Config
xmlns:vasp="http://mms.chinamobile.com/mm7ConfigSchema">
<AuthenticationMode>0</AuthenticationMode>
<UserName>jllf</UserName>
<Password>jllf</Password>
<MaxMessageSize>100000</MaxMessageSize>
<LogPath>d:\powersoft\vas_log</LogPath>
<logLevel>0</logLevel>
<Charset>UTF-8</Charset>
<mmscURL>http://127.0.0.1:8081/Vas</mmscURL>
<mmscIP>8081</mmscIP>
<MmscID>643101</MmscID>
<UseSSL>true</UseSSL>
<ListenIP>http://127.0.0.1:9080/Receiver</ListenIP>
<ListenPort>9080</ListenPort>
<BackLog>50</BackLog>
<TimeOut>90000</TimeOut>
<ReSendCount>2</ReSendCount>
<LogNum>100</LogNum>
<LogInterval>120</LogInterval>
<LogSize>1000</LogSize>
</vasp:MM7Config>
以上为我修改后的代码,然后我开始测试。下发能接受到,但是上行信息接受不到,请教高人~!
--------------------编程问答-------------------- 问题追加,这个程序需要放在tomcat下运行吗? --------------------编程问答-------------------- 现在才弄明白原来订购关系和短信网关是2个东西,自己汗一个。
--------------------编程问答-------------------- 楼主现在还在调试吗?
这个调试成功了吗? --------------------编程问答-------------------- 我现在在启动一个接收线程时会报一个这样的错:
java.net.BindException: Cannot assign requested address: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
at java.net.ServerSocket.bind(ServerSocket.java:319)
at java.net.ServerSocket.<init>(ServerSocket.java:185)
at com.huawei.mm7.vasp.service.MM7Receiver.start(MM7Receiver.java:132)
at m.main(m.java:106)
换过jdk,从1.6换到1.5,也未解决。 --------------------编程问答-------------------- 楼主加Q:38693841
一起探讨 --------------------编程问答-------------------- 楼主还在做么 我才开始 加Q626545711
补充:Java , Java相关