是不是应该改为:
url = new URL("http://localhost:8080/soap/servlet/rpcrouter.jws?wsdl");

解决方案 »

  1.   

    贴一下wsdl看看比较方便,你用的是apache soap吗,为什么不是axis?
    感觉应该是ourUrn和服务器不匹配……
      

  2.   

    classpath中的这一项可能有问题:
    E:\java application\soapapp\HelloWorld\.;
    这么最后还多一个“\.”?而且java和application中间还有一个空格,我记得这个在classpath中是不允许的吧?还是把那个目录名改掉吧。
      

  3.   

    记得把soap.jar放到%tomcat_home%/common/lib下或WEB-INF/lib下面
      

  4.   

    http://community.csdn.net/Expert/TopicView.asp?id=3596605
      

  5.   

    按我说的做,一定通过.把一百分全给我就行了.
    1进入你的工程目录 在这个目录里把所有包打成JAR包 jar cvf abc.jar *.*
    2将abc.jar放入COMMON\LIB里即可
    错误原因是TOMCAT找不到HelloWorld.SOAPService,按我说的做就找到了.
    或者将你的工程加入到TOMCAT的类路径,注意是TOMCAT的类路径也可以解决,但配置麻烦.
      

  6.   

    Apache SOAP的Web Services在Tomcat上的初体验:安装和测试下载:
    Apache SOAP http://xml.apache.org/soap/index.html
    Tomcat http://jakarta.apache.org/1、解压Apache SOAP到%ApacheSOAP%,如:F:\OpenSource\SOAP2、安装Tomcat到%Tomcat%,如:F:\Program Files\Apache Group\Tomcat3、复制%ApacheSOAP%\webapps\soap.war文件到%Tomcat%\webapps目录下4、启动Tomcat,此时Tomcat自动将soap.war解压了5、在%Tomcat%\webapps\soap\WEB-INF\classes建立测试文件HelloSOAPClient.java、HelloSOAP.java,源码附后6、编译,进入%Tomcat%\webapps\soap\WEB-INF\classes目录
    javac -classpath .;%classpath%;F:\OpenSource\SOAP\lib\soap.jar *.java7、SOAP服务的发布
    使用IE浏览器浏览http://localhost:8080/soap/admin/index.html,进入Deploy,填写如下信息:
    ID: urn:hello.hellosoap
    Scope: Request
    Methods getWelcomeValue
    Provider Type: Java
    Java Provider Provider Class:  HelloSOAP
    Java Provider Static: NO
    确认发布,可以点List查看已发布服务
    Service Listing
    Here are the deployed services (select one to see details)urn:hello.hellosoap8、运行,java -classpath .;%classpath%;F:\OpenSource\SOAP\lib\soap.jar HelloSOAPClient
    可以看到返回值信息如下:
    SOAP调用测试开始
    Name:俞黎敏
    Result:欢迎光临SOAP:俞黎敏
    SOAP调用测试结束则证明配置和测试成功,以后就可以发布自己的SOAP服务了!9、删除服务Un-deploy之即可
    Un-Deploy a Service
    Select the service to be undeployed:urn:hello.hellosoappublic class HelloSOAP
    {
        public String getWelcomeValue(String name)
        {
            String strResult = "欢迎光临SOAP:" + name;
            return strResult;
        }
    }import java.net.URL;
    import java.util.Vector;import org.apache.soap.Constants;
    import org.apache.soap.Fault;
    import org.apache.soap.rpc.Call;
    import org.apache.soap.rpc.Parameter;
    import org.apache.soap.rpc.Response;public class HelloSOAPClient
    {
        public static void main(String[] args) throws Exception
        {
            System.out.println("SOAP调用测试开始");
            String name = "俞黎敏";
            HelloSOAPClient helloSOAPClient = new HelloSOAPClient();
            //调用远程的SOAP服务
            String resultValue = helloSOAPClient.doSOAPRequest("hello.hellosoap","getWelcomeValue","name",name);
            System.out.println("Name:" + name);
            System.out.println("Result:" + resultValue);
            System.out.println("SOAP调用测试结束");
        }    public String doSOAPRequest(String _strURI,String _strMethodName,String _strName,String _strValue) throws Exception
        {
            //创建一个远程调用
            Call call = new Call();
            //设置远程对象的URI
            call.setTargetObjectURI("urn:" + _strURI);
            //设置调用的方法名
            call.setMethodName(_strMethodName);
            //设置编码风格
            call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
            //设置方法调用的参数
            Vector params = new Vector();
            params.addElement(new Parameter(_strName,String.class,_strValue,null));
            call.setParams(params);
            //发送RPC请求,请查看webapps\soap\web.xm,就知道rpcrouter是映射到org.apache.soap.server.http.RPCRouterServlet这个类
            Response resp = call.invoke(new URL("http://localhost:8080/soap/servlet/rpcrouter"),"");
            if(resp.generatedFault())
            {
                //远程调用出错处理
                Fault fault = resp.getFault();
                System.out.println("调用失败!");
                System.out.println("错误代号:" + fault.getFaultCode());
                System.out.println("错误信息:" + fault.getFaultString());
                return "调用失败!";
            }
            else
            {
                //调用成功,获取返回值
                Parameter result = resp.getReturnValue();
                return result.getValue().toString();
            }
        }
    }