gpt4 book ai didi

java - WAS 7 REST 客户端中的 Jersey 2

转载 作者:行者123 更新时间:2023-11-30 07:14:57 25 4
gpt4 key购买 nike

您好,我正在尝试解决工作中的问题,但我缺乏这方面的知识。我希望有人能给我一些指引。我正在尝试创建一个简单的 REST 客户端,但它会消耗一些外部 REST Web 服务。

我的开发环境:

Eclipse Luna + Websphere Portal 7 (WAS 7) + JAVA 1.7 + 使用 maven 进行依赖。我正在尝试使用 Jersey 2(最新版本不知道我是否应该使用 Jersey 1)

在我的 web.xml 中我有这个:

<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>

在我的 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 因为我有一个 servlet-api 2.5

获取我需要的 token 的简单方法

@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;
}

问题

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)

我可以确认 _BASE_URI 的格式正确。我不明白为什么会发生这种情况。

有什么想法吗?

最佳答案

参数 jersey.config.server.provider.packages 的值是包名称,因此您不能使用“/”,而必须使用“。” (点):

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

如果您转到https://jersey.java.net/nonav/documentation/2.0/deployment.html您可以找到与 Jersey 相关的示例和信息。

另外不要忘记,在 web.xml 中您需要 servlet 映射,但您在上面的文档中已经有了它。

关于java - WAS 7 REST 客户端中的 Jersey 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38564116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com