Я пишу тестовые случаи Junit для моих верблюжьих маршрутов. Один из верблюжьих маршрутов включает в себя REST DSL, как показано ниже
restConfiguration()
.component("jetty")
.host("0.0.0.0")
.port(this.port)
.scheme("https")
.endpointProperty("sslContextParameters", "#sslContextParameters");
Пожалуйста, найдите ниже один из тестовых случаев.
@Test
public void testSampleService() throws Exception {
context.start();
...
MockEndpoint mock = getMockEndpoint("mock:mockEndPoint");
mock.expectedMessageCount(1);
...
context.stop();
}
В context.start () я получаю исключение, как показано ниже. Однако, когда я изменяю схему https на http и закомментирую endpointProperty для sslContextParameters, она отлично работает.
IllegalStateException: No protocol factory for default protocol 'ssl-http/1.1' in ServerConnector@52bba91a{ssl-http/1.1,[ssl, http/1.1]}{0.0.0.0:9091}
at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:267)
at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:81)
at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:238)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.server.Server.doStart(Server.java:397)
Я настроил SSL для Jetty в моем Camel-контексте, как показано ниже
<bean id="sslContextParameters" class="org.apache.camel.util.jsse.SSLContextParameters">
<property name="keyManagers">
<bean class="org.apache.camel.util.jsse.KeyManagersParameters">
<property name="keyPassword" value="${app.fuse.keymanager.password}" />
<property name="keyStore">
<bean class="org.apache.camel.util.jsse.KeyStoreParameters">
<property name="resource" value="${app.fuse.keystore.path}" />
<property name="type" value="JKS" />
<property name="password" value="${app.fuse.keystore.password}" />
<property name="camelContext" ref="ctx" />
</bean>
</property>
<property name="camelContext" ref="ctx" />
</bean>
</property>
<property name="camelContext" ref="ctx" />
</bean>
И используя нижеприведенные зависимости в моем pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jetty</artifactId>
<version>2.17.0.redhat-630224</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>9.4.8.v20171121</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-io</artifactId>
<version>9.4.8.v20171121</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-continuation</artifactId>
<version>9.4.8.v20171121</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-http</artifactId>
<version>9.4.8.v20171121</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jaas</artifactId>
<version>9.4.8.v20171121</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-security</artifactId>
<version>9.4.8.v20171121</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<version>9.4.8.v20171121</version>
<scope>test</scope>
</dependency>