我正在使用以下库来休息webservice
commons-beanutils-1.7.0.jar
commons-collections-3.2.jar
commons-dbcp-1.2.2.jar
commons-io-1.3.1.jar
commons-lang-2_3.jar
commons-logging-1.1.1.jar
commons-pool-1.2.jar
com.noelios.restlet.ext.spring_2.5.jar
com.noelios.restlet.ext.ssl.jar
com.noelios.restlet.jar
CopyLibs/
ezmorph-1.0.6.jar
httpclient-4.1.1.jar
httpcore-4.1.jar
ibatis-2.3.4.726.jar
jaxb-api-2.1.jar
jaxb-impl-2.1.12.jar
jetty-server-9.0.0.rc0.jar
jetty-util-9.3.0.M1.jar
jsr311-api-1.1.jar
log4j-1.2.16.jar
mysql-connector-java-5.1.9.jar
nblibraries.properties
org.eclipse.jetty.ajp.jar
org.eclipse.jetty.server.jar
org.json.jar
org.restlet-2.0.5.jar
org.restlet.ext.httpclient.jar
org.restlet.ext.jaxb_2.1.jar
org.restlet.ext.jaxrs_1.0.jar
org.restlet.ext.jetty-2.0.3.jar
org.restlet.ext.json_2.0.jar
org.restlet.ext.spring_2.5.jar
org.restlet.ext.ssl.jar
org.restlet.jar
servlet.jar
spring.jar
当我尝试执行它时返回
信息:无法注册帮助程序org.restlet.ext.ssl.HttpsClientHelper java.lang.NoClassDefFoundError:org / restlet / engine / connector / ClientConnectionHelper
我已经尝试更改我的 org.restlet.jar 但是我的下一课无法改变..
import org.restlet.Application;
import org.restlet.Context;
import org.restlet.Filter;
import org.restlet.Redirector;
import org.restlet.Restlet;
import org.restlet.Router;
import org.restlet.ext.jaxrs.JaxRsApplication;
import org.restlet.util.Template;
public class MyJaxApplication extends JaxRsApplication {
Filter filter;
Context context;
String homeUrl;
public MyJaxApplication(Context createChildContext, Filter filter,
String homeUrl) {
super(createChildContext);
this.context = createChildContext;
this.filter = filter;
this.homeUrl = homeUrl;
}
@Override
public Restlet createRoot() {
Router router = new Router(getContext());
Application application = new Application(context) {
@Override
public Restlet createRoot() {
String target = homeUrl;
return new Redirector(getContext(), target,
Redirector.MODE_CLIENT_TEMPORARY);
}
};
router.attach("/", application).getTemplate().setMatchingMode(
Template.MODE_EQUALS);
if (filter != null) {
filter.setNext(super.createRoot());
router.attach(filter);
} else {
router.attach(super.createRoot());
}
return router;
}
}
服务器配置:
<bean id="restletServer" class="org.restlet.ext.spring.SpringServer">
<constructor-arg value="https" />
<constructor-arg value="3442" />
<property name="parameters">
<props>
<prop key="sslContextFactory">org.restlet.engine.ssl.DefaultSslContextFactory</prop>
<prop key="keyStorePath">conf/keystore.jks</prop>
<prop key="keyStorePassword">password</prop>
<prop key="keyPassword">password</prop>
<prop key="keyStoreType">JKS</prop>
</props>
</property>
</bean>
帮助我解决这个问题。
答案 0 :(得分:1)
我在2.3中遇到了同样的问题,因为在2.2中进行了重构,其中类被改组。
最后让HTTPS使用2.3
Gradle依赖项:
Component = new Component();
// create server
Server server = component.getServers().add(Protocol.HTTPS, 443);
// get server parameters
Series<Parameter> parameters = server.getContext().getParameters();
// set parameters
parameters.add("keystorePath", "cert\\testServer.jks");
parameters.add("keystorePassword", "password");
parameters.add("keyPassword", "password");
parameters.add("keystoreType", "JKS");
HTTPS服务器初始化
{{1}}
答案 1 :(得分:0)
我建议升级到2.3版(如果可能)并使用org.restlet.ext.jetty
扩展名作为客户端连接器(不推荐使用HTTP客户端)。
简单地将它放在类路径或应用程序中。
希望它可以帮到你, 亨利