我对这方面都不懂,以前没用过,我在网上看到一种方法就是使用axis1.4调用webservice方法,但是我自己测试了下好像不行啊,我把代码给大家看看,大家告诉我下错误在哪里将axis文件夹复制到tomcat服务器的webapp文件夹中  
首先建立一个任意的java类(例如:HelloWorld.java),复制到axis文件夹下,将其扩展名改为jws,然后重新启动tomcat,在浏览器中输入http://localhost:8989/axis/HelloWorld.jws?wsdl,就会得到一个wsdl文件,其客户端调用方法如下:
import javax.xml.rpc.Service;    
import javax.xml.rpc.ServiceException;    
import javax.xml.rpc.ServiceFactory;    
import java.net.MalformedURLException;    
import java.net.URL;    
import java.rmi.RemoteException;    
import javax.xml.namespace.QName;    
   
public class TestHelloWorld {    
   
   
    public static void main(String[] args) throws MalformedURLException, ServiceException, RemoteException {    
        // TODO Auto-generated method stub    
            
        String wsdlUrl ="http://localhost:8989/axis/HelloWorld.jws?wsdl";    
        String nameSpaceUri ="http://localhost:8989/axis/HelloWorld.jws";    
        String serviceName = "HelloWorldService";    
        String portName = "HelloWorld";    
            
        ServiceFactory serviceFactory = ServiceFactory.newInstance();    
        Service afService =serviceFactory.createService(new URL(wsdlUrl),new QName(nameSpaceUri, serviceName));    
        HelloWorldInterface proxy = (HelloWorldInterface)afService.getPort(new QName(nameSpaceUri, portName),HelloWorldInterface.class);    
        System.out.println("return value is "+proxy.getName("john") ) ;    
            
    }    
   
} 这个方法不行,我试了的

解决方案 »

  1.   

    也不知道你发布成功了没?首先这种即时发布的类不能带有包
    如果你发布成功了,http://localhost:8989/axis/HelloWorld.jws?wsdl就能看到起wsdl文件还有你的客户端发问的代码不要这样写用axis的api去写
    这样import javax.xml.namespace.QName;import org.apache.axis.AxisFault;
    import org.apache.axis.client.Call;
    import org.apache.axis.client.Service;public class TestHelloWorld {   
        
        
      public static void main(String[] args) throws MalformedURLException, ServiceException, RemoteException {   
      // TODO Auto-generated method stub   
        
      String wsdlUrl ="http://localhost:8989/axis/HelloWorld.jws";  
      String serviceName = "HelloWorldService"; //服务名  
      
     Service service = new Service();   
      Call call = (Call) service.createCall();
    call.setTargetEndpointAddress(new java.net.URL(wsdlUrl));
    call.setOperationName(new QName(serviceName, "getName"));
     call.addParameter("string", Constants.XSD_STRING, ParameterMode.IN);
    call.setReturnType(Constants.XSD_STRING);  
    String res = (String) call.invoke(new Object[] {"john"});
    System.out.println(res);
        
      }   
        
    }方法有异常我没有捕获,LZ可以试一下我上面的方法
      

  2.   

    viszl你好,你能帮我把完整代码写给我看看么?可以跑出来的,我新手,还没接触过这个,谢谢你了
      

  3.   

    [Quote=引用 1 楼 viszl 的回复:]viszl你好,你能帮我把完整代码写给我看看么?可以跑出来的,我新手,还没接触过这个,谢谢你了
      

  4.   

    即时发布不实用,你按照我写的客户端应该能访问,如果你服务发布成功的话,我没有这个的demo,给你一篇axis1.4的开发文档你可以参考一下
    http://wenku.baidu.com/view/558a8f3143323968011c9279.html