2016-07-25 6 views
1

Hallo Ich versuche, ein Problem von der Arbeit zu lösen, aber mir fehlt das Wissen in dieser Angelegenheit. Ich hatte gehofft, dass jemand mir etwas Licht geben kann, dem ich folgen kann. Ich versuche, einen einfachen REST-Client zu erstellen und einige externe REST-Webdienste zu nutzen.Jersey 2 in WAS 7 REST Client

Meine Entwicklung env .:

Eclipse-Luna + Websphere Portal 7 (WS 7) + JAVA 1.7 unter Verwendung von Maven für Abhängigkeiten +. Ich versuche Jersey 2 zu verwenden (neueste Version weiß nicht, ob ich Trikot 1 verwenden suposed wurde)

In meiner web.xml Ich habe diese:

<servlet> 
    <servlet-name>ServletAdaptor</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 

    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>myportal/dataaccess/webservice/rest/myrestclient</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

In meinem pom.xml

<dependency> 
     <groupId>org.glassfish.jersey.core</groupId> 
     <artifactId>jersey-client</artifactId> 
     <version>2.23.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.glassfish.jersey.core</groupId> 
     <artifactId>jersey-common</artifactId> 
     <version>2.23.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.glassfish.jersey.core</groupId> 
     <artifactId>jersey-server</artifactId> 
     <version>2.23.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-servlet-core</artifactId> 
     <version>2.23.1</version> 
    </dependency> 

Jersey-Container-Servlet-Core, weil ich ein Servlet-aPI 2.5

Meine einfache Methode haben einen Token zu bekommen ich brauche

@GET 
@Consumes(MediaType.APPLICATION_JSON) 
public String getToken() { 
    String resposta=""; 


    System.out.println("STEP 1"); 
     ClientConfig config = new ClientConfig(); 
     Client client = javax.ws.rs.client.ClientBuilder.newClient(config); 
    System.out.println("STEP 2"); 
     WebTarget targetnp = client.target(_BASE_URI).path("/login"); 
    System.out.println("STEP 3"); 
     targetnp.queryParam("login", _LOGIN); 
     targetnp.queryParam("password", _PASSWORD); 
    System.out.println("STEP 4"); 
     Invocation.Builder invocationBuilder = targetnp.request(MediaType.APPLICATION_JSON); 
     Response response = invocationBuilder.get(); 
    System.out.println("STEP 5"); 
    System.out.println(response.getStatus()); 


    return resposta; 
} 

DAS PROBLEM

SystemOut  O STEP 1 
[25-07-2016 10:22:12:797 BST] 0000003e SystemOut  O STEP 2 
[25-07-2016 10:22:12:813 BST] 0000003e ServletWrappe E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E: Uncaught exception created in one of the service methods of the servlet RESTtest in application MyPortalEAR. Exception created : java.lang.AbstractMethodError: javax/ws/rs/core/UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder; 
    at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119) 
    at org.glassfish.jersey.client.JerseyWebTarget.<init>(JerseyWebTarget.java:71) 
    at org.glassfish.jersey.client.JerseyClient.target(JerseyClient.java:290) 
    at org.glassfish.jersey.client.JerseyClient.target(JerseyClient.java:76) 

ich die _BASE_URI bestätigen kann, ist gut ausgebildet. Ich verstehe nicht, warum das passiert.

Irgendwelche Ideen?

Antwort

1

Der param jersey.config.server.provider.packages Die Werte sind Paketnamen, daher können Sie nicht das "/" verwenden, das Sie verwenden müssen. " (Dot):

<init-param> 
    <param-name>jersey.config.server.provider.packages</param-name> 
    <param-value>myportal.dataaccess.webservice.rest.myrestclient</param-value> 
</init-param> 

Wenn Sie https://jersey.java.net/nonav/documentation/2.0/deployment.html gehen Sie Beispiele und Informationen finden Trikot beziehen.

Vergessen Sie auch nicht, dass Sie in der web.xml das Servlet Mapping benötigen, aber Sie haben das in der obigen Dokumentation.

+0

Hat nicht funktioniert..thx –