gpt4 book ai didi

java - 将 J2SE 端点绑定(bind)到 HTTPS

转载 作者:太空宇宙 更新时间:2023-11-04 08:43:56 28 4
gpt4 key购买 nike

我创建了一个基本的 REST 服务,该服务在通过 http 连接调用时可以工作。但是当我尝试在上面添加 SSL 时,我遇到了一些问题。

这是创建服务器的代码:

 private HttpContext getHttpContext() {
HttpsServer server = null;
try {
server = HttpsServer.create(new InetSocketAddress("localhost", 443), 5);

server.setHttpsConfigurator(new HttpsConfigurator(SecureChatSslContextFactory.getServerContext()) {

public void configure(HttpsParameters params) {
SSLContext context = getSSLContext();

// get the default parameters
SSLParameters sslparams = context.getDefaultSSLParameters();
params.setSSLParameters(sslparams);
}
});

server.start();

return server.createContext("/customerservice/customer");
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
Endpoint e = Endpoint.create(HTTPBinding.HTTP_BINDING, new RestSourcePayloadProvider());
e.publish(getHttpContext());

RestSourcePayloadProvide 类具有公共(public)方法调用,但它永远不会被调用。我认为出现此行为的原因是端点的绑定(bind)是 HTTPBinding.HTTP_BINDING,而不是 HTTPS。但我没能找到绑定(bind) https 的方法。

如果我在 link text 上运行测试客户端或浏览器我得到同样的答案:

500 Internal Server Error No handler for context

最佳答案

我找到了问题的答案。我没有为传入请求创建处理程序。我本来应该使用

return server.createContext("/customerservice/customer", new HttpHandler(...));

而不是

return server.createContext("/customerservice/customer");

看起来接口(interface)Endpoint是由Apache CFX中的EndpointImpl类实现的。当调用 publish(address) 时,EndpointImpl 中调用的方法会创建一个作为服务服务器的 ServerImpl。如果我调用 publish(server context),则不会发生任何事情,因为 EndpointImpl 也不会覆盖该方法。

关于java - 将 J2SE 端点绑定(bind)到 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4735116/

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