各位好,小弟写了一个方法C,方法C的作用就是new service();用call类方法去调用另外一个webservice接口back。现在的问题是,如果在myeclipse上运行方法c,能够执行,并返回接口back的数据。但是我把方法c 用axis2+tomcat6 发布之后,直接在地址栏中输入的话,提示内部服务器错误,这是怎么回事。请指教,谢谢!

解决方案 »

  1.   

    只要2个webService调用都没问题就可以调通,
      

  2.   

    报的什么错误哇?想你这样在mueclipse中可以运行,说明你配置可能有问题。lz把你的log贴出来
      

  3.   

    我把代码贴出来吧package deptInfo// 包名
    import * // 包含相应包public class GetDeptInfoService{
      //createsoapXMLIN 产生个xml格式的文本,供getinfomatiom 调用
      public static String createsoapXMLIN(Map<String,String> params){
       
           if(params.isEmpty())
           {
            return null;
            }
           else{
              String xmlIn = "";
              xmlIn = "<?xml version =\"1.0\" encoding=\"UTF-8"\?><DBSET><R>";
              Iterator it = params.keySet().iterator();
              while(it.hasNext()){
                    String keyName = it.next().toString();
                    xmlIn += "<C N=\""+keyName+"\">"+params.get(keyName).toString()+"</C>";
                   }
              xmlIn +="</R></DBSET>"
              return xmlIn;
               }  
    }   //getinfomatiom 需要传入参数number,去访问服务接口,将返回的数据保留
    //主要就是这个方法出现问题,同时还有一个方法back,就是简单的返回字符串hello,这个是可以用的
        public static OMElement getinfomatiom(OMElement  number){
           
        
        OMElement noElement = number.getFirstElement();
        String no = noElement.getText();    String res="";
    try{
          //此处是访问服务接口 xxxxx ,同时需要认证,用call.invoke()返回数据
          String url="xxxxx",username="dddd",password="tttt";
          Service service=new Service();
          Call call=(Call) service.creatCall();
          call.setTargetEndpointAddress(new java.net.URL(url));
          call.addHeader(new SOAPHeaderElement("Authorization","username",username));
          call.addHeader(new SOAPHeaderElement("Authorization","password",password));
          call.setOperationName("invoke");
          Map<String,String> map= new HashMap<String,String>();
          map.put("ORG_NO",no);
          res=call.invoke(new Object[]{
              "ee/kk/service",//服务端请求地址
              "getInfo",//对应服务名称
              GetDeptInfoService.createsoapXMLIN(map)});//xml格式传输参数no
            OMFactory fac = OMAbstractFactory.getOMFactory();
            OMNamespace omNs = fac.createOMNamespace(
                    "http://getinfomation.com", "getInfo");
            OMElement method = fac.createOMElement("getinfomatiom", omNs);
            method.setText(res);
            return method;
        }
    catch(Eception e){
       return null;
        }
    finally{}
              }}tomcat和axis2 
    这个是我写的服务端代码,需要把getinfomatiom()方法做出webservice方法,我在工程下的bin文件夹中找到GetDeptInfoService.class 文件,同时建立了个service.xml 文件,通过打包成.aar 的格式放在service目录下,在本地浏览器中http://localhost:8080/axis2/servces/listServices 中可以看到有GetDeptInfoService ,但是用客户端调用时,找不到方法。直接在地址栏中访问也是无法显示网页,应该是我发布有问题。请指教下,该如何正确发布,同时帮忙看下,我的服务端class是否正确,谢谢。
      

  4.   

    帮忙看看,不甚感激,小弟是初学者,对于log不是很熟悉,写了个客户端去调用时 提示Could not initialize class org.apache.axis.client.AxisClient.
    同时,对服务端方法进行逐一排除,当把new Service()那块注销掉后,修改下返回内容为输入参数,可以正常运行。
    所以,我觉得是不是 new Service()那块代码有错,不能在webservice 方法中使用?请哪位大侠指点下,不甚感激