2012-11-27 21 views
7
**My Web service class** 

import javax.jws.WebMethod; 
import javax.jws.WebService; 

/** 
* @author edward 
* 
*/ 
@WebService 
public class HelloWeb { 

    @WebMethod 
    public String sayGreeting(String name) { 
     return "Greeting " + name + "....!"; 
    } 

} 

我的服務器的Java類如何使用普通Java類訪問Web服務?

import javax.xml.ws.Endpoint; 

public class Server { 
    public static void main(String[] args) { 
     Endpoint.publish("http://localhost:9090/HelloWeb", new HelloWeb()); 
     System.out.println("Hello Web service is ready"); 
    } 
} 

服務器運行正常,我能夠訪問使用URL返回WSDL code.But我想用獨特的訪問服務器服務java.I中的URL具有以下客戶端Java代碼。

客戶端訪問的HelloWeb服務

import java.net.URL; 

import javax.xml.namespace.QName; 
import javax.xml.rpc.Service; 
import javax.xml.rpc.ServiceFactory; 

public class WebClient { 
    String wsdl = "http://172.21.1.65:9090/HelloWeb?wsdl"; 
    String namespace = "http://helloweb.com"; 
    String serviceName = "HelloWebService"; 

    QName serviceQN = new QName(namespace, serviceName); 

    { 
     try{ 

     ServiceFactory serviceFactory = ServiceFactory.newInstance(); 
     Service service = serviceFactory.createService(new URL(wsdl), serviceQN); 

     }catch (Exception e) { 

     } 
    } 
} 

回答

1

試試這個,請注意,我編譯和「測試」包冉您的服務器,這一點很重要。這只是以JAX-WS開始的一個基本示例。

package test; 

import java.net.URL; 

import javax.jws.WebMethod; 
import javax.jws.WebService; 
import javax.xml.namespace.QName; 
import javax.xml.ws.Service; 

public class WebClient { 

    @WebService(name = "HelloWeb", targetNamespace = "http://test/") 
    public interface HelloWeb { 
     @WebMethod 
     String sayGreeting(String name); 
    } 

    public static void main(String[] args) throws Exception { 
     Service serv = Service.create(new URL(
       "http://localhost:9090/HelloWeb?wsdl"), 
       new QName("http://test/", "HelloWebService")); 
     HelloWeb p = serv.getPort(HelloWeb.class); 
     System.out.println(p.sayGreeting("John")); 
    } 
}