由于不能确定WebService服务端的地址,现在只能用本地机器的URL做为连接地址。
请问有什么办法,可以再不重新编译的情况下,修改客户端的URL地址,指定相对应的URL。

解决方案 »

  1.   

    好像没看懂你要做什么。
    把WebService的地址配置在一个xml文件中,每次启动服务(Tomcat)的时候把这个地址放到一个"常量"中,所有有用到WebService地址的地方都从这个“常量”中获取,这样是否可以?<xxx>
    <webServicesUrl>http://xxx.xx.xx.x/xxx/xx</webServicesUrl>
    </xxx>
      

  2.   

    拼撒:String wsdlLocation = "http://" + ip + ":" + port + "/" + contextRoot + "/sssService?wsdl";然后传到相应客户端类的构造方法
      

  3.   

    可以设定URL的,不知道你是如何调用的
    我一般使用axis或者 JAX-RPC 生成客户端,在XXXLocator.java
    这个类里面提供了两种获取服务的方式,
    一种 是无参 函数 默认使用WSDL中得Endpoint
    还有一个重载的函数,有一个URL参数,可以自己构造服务的URL来获取服务 
      

  4.   

    结贴,问题搞定了,下面是我写的方法,包括一些表头的设置,不然会报soap header security异常        private SipSubjectService getWebService(String address) {
    JaxWsProxyFactoryBean bean = new JaxWsProxyFactoryBean();

    Map<String, Object> outProps = new HashMap<String, Object>();   
        outProps.put(WSHandlerConstants.ACTION,WSHandlerConstants.USERNAME_TOKEN);   
        outProps.put(WSHandlerConstants.USER, "ws-client");   
        outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);   
        outProps.put(WSHandlerConstants.PW_CALLBACK_CLASS,   
         WsClientAuthHandler.class.getName());   
        WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);   
        bean.getOutInterceptors().add(wssOut);   
        bean.getOutInterceptors().add(new SAAJOutInterceptor()); 

    bean.setServiceClass(SipSubjectService.class);
    bean.setAddress(address + "/ws/SipSubjectService");
    SipSubjectService service = (SipSubjectService) bean.create();
    return service;
    }平均散分吧