小编cas*_*lin的帖子

如何使用JAX-RS转发请求?

我想将REST请求转发到另一台服务器。

我将JAX-RS与Jersey和Tomcat一起使用。我尝试通过设置See Other响应和添加Location标题来进行尝试,但这并不是真正的前进。

如果我使用:

request.getRequestDispatcher(url).forward(request, response); 
Run Code Online (Sandbox Code Playgroud)

我得到:

  • java.lang.StackOverflowError:如果网址是相对路径
  • java.lang.IllegalArgumentException:路径http://website.com不能以/字符开头(我认为转发仅在同一servlet上下文中是合法的)。

如何转发请求?

java servlets http jax-rs forward

5
推荐指数
1
解决办法
5544
查看次数

使用 jax-rs 和 cxf 进行客户端身份验证

我们要将 JAX-RS 实现从 Jersey 切换到 Apache CXF 3.0。我只是无法弄清楚基本身份验证是如何以 Apache CXF 方式完成的。我在 CXF 周围找到的所有示例WebClient,而不是 JAX-RS Client API。

这就是泽西岛的工作:

Client client = ClientBuilder.newClient();
client.register(HttpAuthenticationFeature.basic(config.getUsername(),config.getPassword()));
Run Code Online (Sandbox Code Playgroud)

如何使用 Apache CXF 做到这一点?

java cxf jax-rs jersey

5
推荐指数
1
解决办法
1903
查看次数

在JPA 2.1中基于多个属性创建转换器

JPA 2.1引入了类型转换器.我找到了基于单个实体属性的转换器示例.

是否可以基于多个实体属性创建类型转换器?
有一些例子吗?

java orm hibernate jpa jpa-2.1

5
推荐指数
1
解决办法
3634
查看次数

使用Jersey在运行时确定同步或异步响应

是否可以在运行时决定是否应同步或异步处理对资源端点的Jersey REST请求?我们举一个简单的例子.

同步版本:

@Path("resource")
public class Resource {
    @GET
    @Produces({MediaType.TEXT_PLAIN})
    public Response get() {
        return Response.ok("Hello there!").build();
    }
}
Run Code Online (Sandbox Code Playgroud)

异步版本:

@Path("resource")
public class Resource {
    @GET
    @Produces({MediaType.TEXT_PLAIN})
    public void get(@Suspended final AsyncResponse r) {
        r.resume(Response.ok("Hello there!").build()); // usually called somewhere from another thread
    }
}
Run Code Online (Sandbox Code Playgroud)

根据某些参数,我想在运行时决定是应该同步还是异步处理GET请求.http://server/resource在两种情况下,资源endpoint()的URL 必须相同.这可能吗?

当然,正如您在上面的示例中所看到的,同步版本可以通过简单调用以异步方式伪造AsyncResponse.resume(...).但是,我会避免创建异步响应的开销.

java rest asynchronous jersey

5
推荐指数
1
解决办法
929
查看次数

如何使用Jackson将Java Enums序列化和反序列化为JSON对象

鉴于Enum:

public enum CarStatus {
    NEW("Right off the lot"),
    USED("Has had several owners"),
    ANTIQUE("Over 25 years old");

    public String description;

    public CarStatus(String description) {
        this.description = description;
    }
}
Run Code Online (Sandbox Code Playgroud)

我们如何设置它,以便杰克逊可以将此枚举的实例序列化和反序列化为以下格式.

{
    "name": "NEW",
    "description": "Right off the lot"
}
Run Code Online (Sandbox Code Playgroud)

默认是简单地将枚举序列化为字符串.例如"NEW".

java enums jackson

5
推荐指数
1
解决办法
7184
查看次数

使用REST重定向URL的最佳方法

任何人都可以建议我在以下两种方式中使用REST重定向URL的最佳方法:

1. httpResponse.sendRedirect("URL");
2. Response.temporaryRedirect(new URI("path"));
Run Code Online (Sandbox Code Playgroud)

java rest servlets

5
推荐指数
2
解决办法
2万
查看次数

WebDAV PROPFIND方法是否应该与REST API中的JSON一起使用?

我正在构建一个在任何地方使用JSON的Web服务.

现在我需要一个HTTP方法来检索资源的属性(例如,像read-only,write,ACL这样的属性).看起来只有一种HTTP方法用于此目的:PROPFIND.

但是规范明确指示使用XML.

无论如何,使用带有JSON接口的动词是疯了吗?我也担心这PROPFIND是WebDAV扩展的一部分.

如果这是不行的,那么在面向JSON的Web服务中检索资源属性的推荐动词或推荐方法是什么?

rest json web-services

5
推荐指数
2
解决办法
1104
查看次数

在 WildFly 中部署 Web 服务时无法获取 WSDL 合约错误

我正在尝试在 WildFly 服务器中部署我的 Web 服务,但出现以下异常:

6:44:06,265 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service jboss.deployment.unit."MyService.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."MyService.war".INSTALL: WFLYSRV0153: Failed to process phase INSTALL of deployment "MyService.war"
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:154)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)Caused by: org.jboss.wsf.spi.WSFException: JBWS024109: Could not get WSDL contract for endpoint com.sun.xml.ws.tx.coord.v11.endpoint.RegistrationPortImpl at /wsdls/wsc11/wstx-wscoor-1.1-wsdl-200702.wsdl
at org.jboss.wsf.stack.cxf.metadata.MetadataBuilder.getWsdlLocationURL(MetadataBuilder.java:283)
at org.jboss.wsf.stack.cxf.metadata.MetadataBuilder.build(MetadataBuilder.java:90)
at org.jboss.wsf.stack.cxf.deployment.aspect.DescriptorDeploymentAspect.start(DescriptorDeploymentAspect.java:42)
at org.jboss.as.webservices.deployers.AspectDeploymentProcessor.deploy(AspectDeploymentProcessor.java:73)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:147)
... 5 more
Run Code Online (Sandbox Code Playgroud)

我该如何解决上述问题?

java web-services wildfly

5
推荐指数
1
解决办法
5789
查看次数

授权标头未通过HTTPS加密

我目前正在使用一个使用HTTP基本身份验证的REST API.

根据下面的图片,Authorization一旦我通过HTTPS连接使用Angular应用程序,是不是应该加密的标头?

在此输入图像描述

rest https http basic-authentication angular

5
推荐指数
1
解决办法
748
查看次数

具有多个私钥/公钥对的 JWT

我正在实施类似于:https : //login.microsoftonline.com/common/discovery/v2.0/keys

Spring 启动 JWT 应用程序,用于生成和验证 JWT 令牌。我将生成许多公钥/私钥(我不想用一个密钥生成所有令牌。一对密钥将生成寿命较短的令牌,第二个将生成更长的令牌......)我将使用公钥创建端点/密钥. 问题是:如何在我的应用程序中将正确的公钥与私钥连接起来进行验证?

第二个:如何生成上述密钥(使用 kty":"RSA"、"use":"sig"、kid... 等字段)是否有任何模式可以做到?

java jwt spring-boot

5
推荐指数
1
解决办法
4625
查看次数