2013-06-01 25 views
12

Ubuntu altında jboss üzerine kurulu basit "HelloWorld" web servisim var. Basit istemci oluşturdum, ancak işe yaramayacağım. İstemciyi her çalıştırdığımda NullPointerException alıyorum.JAVA JAX-WS NullPointerException javax.xml.ws.Service.getPort (Service.java:188)

Ubuntu altında Oracle Java 7 üzerinde çalıştığımı unutmayın.

import java.net.MalformedURLException; 
import java.net.URL; 

import javax.xml.namespace.QName; 
import javax.xml.ws.Service; 


public class HelloWorldClient { 

public static void main(String[] args){ 
    URL url; 
    try { 
     url = new URL("http://localhost:8080/WebServiceProject/helloWorld?wsdl"); 
     QName qname = new QName("http:///", "HelloWorldImplService"); 

     Service service = Service.create(url, qname); 

     HelloWorld hello = service.getPort(HelloWorld.class); 

     System.out.println(hello.sayHello("mkyong")); 
    } catch (MalformedURLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

}

HelloWorld.java

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


@WebService 
public interface HelloWorld { 

    @WebMethod 
    public String sayHello(String name); 

} 

StackTrace HelloWorldClient.java:

Exception in thread "main" java.lang.NullPointerException 
at com.sun.xml.internal.ws.model.RuntimeModeler.getPortTypeName(RuntimeModeler.java:1407) 
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:334) 
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:354) 
at javax.xml.ws.Service.getPort(Service.java:188) 
at HelloWorldClient.main(HelloWorldClient.java:18) 

excepti Burada

kodudur bu satırda atılır:

HelloWorld hello = service.getPort(HelloWorld.class); 
+1

Sadece hızlı bir yorum ve belki de senin sorununla tamamen alakasız ama 'QName'de fazladan bir'/'var. Yazım hatası mı? –

+1

@SamRad alakalı olabilir. Servisin niçin – kolossus

+0

nolu olabileceğini açıklar. Ekstra "/" yoktur. URL'yi "http: // birşey /" gibi yazarsınız. Bu durumda sadece "bir şey" yoktur. Ayrıca Servis boş değil. StackTrace'e bakın – Bladositto

cevap

3

ben aynı problem vardı kendim birkaç gün şimdi, kullanıyordum WSDL dosyası (ve hizmet) yeni bir URL'ye taşındığı için. (Olması gereken) I (Windows/CygWin üzerinde) aşağıdaki komutla tüm otomatik olarak üretilen java ve sınıf dosyaları oluşturulan yeniden sonra çalışmaya başlayan Kısacası

http://techtracer.com/2007/08/15/jax-ws-jaxp-tutorial-building-a-stockquote-web-service-client/

, her şeyi: Sonunda burada çözüm buldu bazı eski dosyalar etrafında sola ve yeni oluşturulan olanlar ile çatışan, ama her şey yavaş yavaş geri dönüşüm kutusuna tüm eski dosyalar taşındıktan sonra çalışmaya başladı çünkü

"C:/Program Files/Java/jdk1.8.0_31/bin/wsimport.exe" -keep https://domain.com/path_to_wsdl 

ben bazı ekstra sorunlar vardı.

0

Web servisinizin uygulamasının projenizdeki arabirimden farklı olması durumunda da olabilir.

Projenizde, web servis tarafında bulunmayan bazı yöntemleri bildiren HelloWorld.class varsa, getPort (HelloWorld.class) çağrısı, boş bir işaretçi istisnası oluşturacaktır.

Uygulamanızdaki HelloWorld.class arabirimini ve bunların eşleştiğinden emin olmak için web hizmetinin kendisinde bir kez daha kontrol edebilirsiniz.

İlgili konular