第一次使用webservice,服务端是.net生成的,客户端我们使用java的axis2来进行访问,现在服务端要通过接口给我传递数据,每次最少是1.8M,我这里接收的时候特别慢,得好几分钟,我也不知道这样是否正常,所以请大家赐教
这是我的测试代码:import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;public class ServicePdf
{
private static EndpointReference targetEPR = new EndpointReference(
"http://10.10.247.51/ns/Service.asmx?op=GetNOTAMs"); /** 这里是要调用的targetUrl */ public static void main(String[] args) throws Exception
{
ServiceClient sender = new ServiceClient();
sender.setOptions(buildOptions());
OMElement result = sender.sendReceive(buildParam());
System.out.println(result);
} private static OMElement buildParam()
{
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace("http://tempuri.org/", "");
OMElement data = fac.createOMElement("GetNOTAMs", omNs);
OMElement inner = fac.createOMElement("DeskID", omNs);
OMElement inner1 = fac.createOMElement("FlightNo", omNs);
OMElement inner2 = fac.createOMElement("Origin", omNs);
OMElement inner3 = fac.createOMElement("Dest", omNs);
OMElement inner4 = fac.createOMElement("ALT1id", omNs);
OMElement inner5 = fac.createOMElement("ALT2id", omNs);
OMElement inner6 = fac.createOMElement("TOFFALTid", omNs);
OMElement inner7 = fac.createOMElement("REFArptid", omNs);
OMElement inner8 = fac.createOMElement("REFAltid", omNs);
OMElement inner9 = fac.createOMElement("RouteDefinition", omNs);
OMElement inner10 = fac.createOMElement("ETDz", omNs);
OMElement inner11 = fac.createOMElement("ETAz", omNs);
OMElement inner12 = fac.createOMElement("ETOPSalts", omNs);
OMElement inner13 = fac.createOMElement("R", omNs);
inner.setText("");
inner1.setText("");
inner2.setText("ABCD");
inner3.setText("EFGH");
inner4.setText("");
inner5.setText("");
inner6.setText("");
inner7.setText("");
inner8.setText("");
inner9.setText("001");
inner10.setText("");
inner11.setText("");
inner12.setText("");
inner13.setText("");
data.addChild(inner);
data.addChild(inner1);
data.addChild(inner2);
data.addChild(inner3);
data.addChild(inner4);
data.addChild(inner5);
data.addChild(inner6);
data.addChild(inner7);
data.addChild(inner8);
data.addChild(inner9);
data.addChild(inner10);
data.addChild(inner11);
data.addChild(inner12);
data.addChild(inner13);


return data;

} private static Options buildOptions()
{
Options options = new Options();
options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
options.setAction("http://tempuri.org/GetNOTAMs");
/** 设置调用的命名空间加方法 */
options.setTo(targetEPR); options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
/** 设置传输协议 */
return options;
}
}asmx提供的接口需要10多个参数,所以比较长,我就是想知道,是不是我这个代码写的有问题,造成速度特别慢,还是说因为服务器端提供的数据量太大造成的

解决方案 »

  1.   

    10多个参数不算多你可以主要检查一下你的代码,在可能耗时的前后加上时间输出,看看有没有代码是比较耗时的。
    如果没有,那就是web service的速度问题了,本来它就不快。
      

  2.   

    就是这段接收webservice传递来的数据比较慢,所以我在想是不是axis2的问题……还有就是webservice传递的是1.8M的数据不知道和这个是否有关系
      

  3.   

    就算是axis的问题,你也没办法了,呵呵,我们都是使用工具的程序员而已。你们传输的数据量太大了,真算是糟糕的设计