小弟写了一个pojo
public class SimpleService
{
    public String getGreeting(String name)
    {
       System.out.println("ok" + name);
       
        return "你好 " + name;
    }    
    public int getPrice()
    {
        return new java.util.Random().nextInt(1000);
    }    
}
编译成class之后放到E:\precious\axis2\apache-tomcat-7.0.22\webapps\axis2\WEB-INF\pojo目录下
启动tomcat之后浏览器访问
http://localhost:8080/axis2/services/SimpleService/getGreeting?name=aaa可是页面返回的信息是
<ns:getGreetingResponse><return>你好 null</return></ns:getGreetingResponse>为什么会是null呢? System.out.println("ok" + name);
控制台上也是null,为什么?
哪位大侠帮我指导一下,感激不尽,webservice刚开始学习,谢谢大家了。

解决方案 »

  1.   

    很明显,你的name没有获取到值,把前一半代码给贴出来看看!
      

  2.   

    你用的是C#的webservice访问方式,axis里是不一样的访问地址改为http://localhost:8080/axis2/services/SimpleService?method=getGreeting&args=name
      

  3.   


    没有客户端代码,直接URL访问。
      

  4.   


    我看了动态生成的wsdl文件,把name改成args0就ok了
    http://localhost:8080/axis2/services/SimpleService/getGreeting?args0=aaa
      

  5.   

    我跟你同样的问题 但是我想问的是:为什么参数名称是args0而不是name呢?
      

  6.   

    WSDL生成的,具体为什么没有生成NAME,我估计可能是配置的问题,初探axis2,如果你知道啦,麻烦跟一下帖子,谢谢
      

  7.   

    AXIS2默认生成的wsdl文件中所有的方法参数是args0,args1...等等;
    要使wsdl文件中的方法参数显示为webservice接口中的实际的参数名称,
    需要对webservice接口中的方法参数用@WebPara(name="参数名称")进行注解;
    (提示: 是对接口定义的方法参数进行注解, 而不是对实现类的方法参数进行注解);
    例如:webservice的认证接口定义及实现:
    public interface AuthService
    {
        //注意webservice接口的方法参数要用@WebPara(name="参数名称")进行注解;
        public UserToken auth(@WebParam(name="userName") String userName, 
            @WebParam(name="password") String password) throws ServiceException;
    }public class AuthServiceImpl implements AuthService
    {
        //注意webservice实现类的方法参数是不需要@WebPara注解的;
        public UserToken auth(String userName, String password) throws ServiceException
        {
            ......
        }
    }