环境背景,Eclipse + axis2_1.6.2
实现客户端调用.net的webservice XX.axms
---------------------------------------------------
axis2 客户端可以走同步调用,和异步调用。同步已实现,现在是异步的一点点小疑问。
----------代码
public static void getWeather(String action,String methodStr,String namespace,String tns,String[] pars,String[] vals) throws IOException{
OMElement result = null;
try {
ServiceClient client = new ServiceClient();
client.setOptions(getClientOptions(action));
// result = client.sendReceive(getOMMethod(methodStr,namespace,tns,pars,vals));
client.sendReceiveNonBlocking(getOMMethod(methodStr,namespace,tns,pars,vals),
new AxisCallback(){
@Override
public void onComplete()
{
}
@Override
public void onError(Exception arg0)
{
}
@Override
public void onFault(MessageContext arg0)
{
}
@Override
public void onMessage(MessageContext mc)
{
// 输出返回值
System.out.println("---这是webservice返回结果");
}
}
);
System.out.println("getWeather");
System.in.read();
} catch (AxisFault e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
String action = "http://WebXml.com.cn/getWeatherbyCityName";
String methodStr = "getWeatherbyCityName";
String namespace = "http://WebXml.com.cn/";
String tns = "xsd";
String[] pars = {"theCityName"};
String[] vals = {"杭州"};
OMElement result = null;
getWeather(action, methodStr, namespace, tns, pars, vals);
System.out.println("main last");
}
实现客户端调用.net的webservice XX.axms
---------------------------------------------------
axis2 客户端可以走同步调用,和异步调用。同步已实现,现在是异步的一点点小疑问。
----------代码
public static void getWeather(String action,String methodStr,String namespace,String tns,String[] pars,String[] vals) throws IOException{
OMElement result = null;
try {
ServiceClient client = new ServiceClient();
client.setOptions(getClientOptions(action));
// result = client.sendReceive(getOMMethod(methodStr,namespace,tns,pars,vals));
client.sendReceiveNonBlocking(getOMMethod(methodStr,namespace,tns,pars,vals),
new AxisCallback(){
@Override
public void onComplete()
{
}
@Override
public void onError(Exception arg0)
{
}
@Override
public void onFault(MessageContext arg0)
{
}
@Override
public void onMessage(MessageContext mc)
{
// 输出返回值
System.out.println("---这是webservice返回结果");
}
}
);
System.out.println("getWeather");
System.in.read();
} catch (AxisFault e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
String action = "http://WebXml.com.cn/getWeatherbyCityName";
String methodStr = "getWeatherbyCityName";
String namespace = "http://WebXml.com.cn/";
String tns = "xsd";
String[] pars = {"theCityName"};
String[] vals = {"杭州"};
OMElement result = null;
getWeather(action, methodStr, namespace, tns, pars, vals);
System.out.println("main last");
}
解决方案 »
- 哪位大神用过xfire做webservice,帮小弟一个忙!!!!!!!
- CVS添加用户
- eWebEditer的插入显示乱码问题
- 急!URI里有中文,显示乱码!
- 各位高手出来帮帮小弟吧,这段程序我也不知道问题在哪?谢谢了!!!
- 用了jspSmartupload组件后,提交表单乱码!
- 用<logic:iterate>怎么控制循环?
- 关于如何在java中得到当前oracle的一个自增长序列的的值的问题,最好告知代码
- 一个初级问题
- BBS中的在线人数如何知道?
- struts2返回success之后,怎么让action跳转的页面显示在一个frameset上
- 怎样查看Tomcat当前获得的和使用的内存大小是多少?
----
getWeather
---这是webservice返回结果
-------------------------也就是说程序在getWeather()中异步的执行了 输出语句,又执行了回调方法onMessage() ,但是他没有执行Main方法中的最后一句????????????????????????
但是当我注释掉,System.in.read();的时候,执行结果是
----
getWeather
main last
--------------------------
他又不执行回调函数了 我很纠结。