Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为HTTPS配置OSGiHTTP白板servlet?_Java_Https_Jetty_Osgi_Whiteboard - Fatal编程技术网

Java 如何为HTTPS配置OSGiHTTP白板servlet?

Java 如何为HTTPS配置OSGiHTTP白板servlet?,java,https,jetty,osgi,whiteboard,Java,Https,Jetty,Osgi,Whiteboard,我通过osgi中的http白板servlet模式构建了一个REST接口 @Component(service = RestComponentImpl.class) @JaxrsResource @HttpWhiteboardResource(pattern = "/rest/*", prefix = "static") public class RestComponentImpl { @Path("test") @PUT @Produces(MediaType.AP

我通过osgi中的http白板servlet模式构建了一个REST接口

@Component(service = RestComponentImpl.class)
@JaxrsResource
@HttpWhiteboardResource(pattern = "/rest/*", prefix = "static")
public class RestComponentImpl {  

    @Path("test")
    @PUT
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public TestObject getTest(TestObject testo) {
        return testo;
    }
}
我通过osgi配置将jetty配置为HTTPS,并在启动时作为json传递

{
  "org.apache.felix.http": {
    "org.apache.felix.http.enable": "true",
    "org.apache.felix.https.enable": "true",
    "org.osgi.service.http.port.secure": "8443",
    "org.apache.felix.https.keystore": "src/main/resources/jetty_key/keystore",
    "org.apache.felix.https.keystore.password": "mostsecurepasswordever",
  }
}
我的bndrun看起来像

index: target/index.xml;name="rest-app"

-standalone: ${index}

-runrequires: 
osgi.identity;filter:='(osgi.identity=resttest.rest-services)',\
osgi.identity;filter:='(osgi.identity=org.apache.felix.metatype)',\
osgi.identity;filter:='(osgi.identity=org.apache.johnzon.core)',\

-runfw: org.eclipse.osgi
-runee: JavaSE-1.8
-runbundles: \
    ch.qos.logback.classic;version='[1.2.3,1.2.4)',\
    ch.qos.logback.core;version='[1.2.3,1.2.4)',\
    org.apache.aries.javax.jax.rs-api;version='[1.0.0,1.0.1)',\
    org.apache.aries.jax.rs.whiteboard;version='[1.0.0,1.0.1)',\
    org.apache.felix.configadmin;version='[1.9.2,1.9.3)',\
    org.apache.felix.http.jetty;version='[4.0.0,4.0.1)',\
    org.apache.felix.http.servlet-api;version='[1.1.2,1.1.3)',\
    org.apache.felix.scr;version='[2.1.0,2.1.1)',\
    org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\
    org.osgi.service.jaxrs;version='[1.0.0,1.0.1)',\
    org.osgi.util.function;version='[1.1.0,1.1.1)',\
    org.osgi.util.promise;version='[1.1.0,1.1.1)',\
    slf4j.api;version='[1.7.25,1.7.26)',\
    org.apache.servicemix.specs.json-api-1.1;version='[2.9.0,2.9.1)',\
    org.osgi.util.converter;version='[1.0.0,1.0.1)',\
    org.apache.felix.metatype;version='[1.2.0,1.2.1)',\
    resttest.rest-app;version='[0.0.1,0.0.2)',\
    org.apache.felix.configurator;version='[1.0.0,1.0.1)',\
    org.apache.johnzon.core;version='[1.1.0,1.1.1)'
没有上面提供的https配置,servlet通过 通过配置,我仍然可以通过 使用https配置,服务甚至不会启动:

Component #0 resttest.rest.RestComponentImpl, state satisfied
我无法连接到,得到:

HTTP ERROR 404
Problem accessing /test. Reason:
Not Found
ApacheFelixWeb控制台在两种配置下都可以通过或完美地工作

有人有什么想法或建议吗?或者任何其他想法,快速构建一个部署在osgi上下文中的REST解决方案,并使用json序列化,而不需要与更大的框架发生冲突?
谢谢。

如果收到404响应,则表示您已连接,请求已发出,服务器响应404。这不是连接问题。是的,谢谢。但问题不在于连接,而是servlet没有响应https,我不知道为什么以及在哪里配置它们,以便它们响应。