无法注册帮助程序org.restlet.ext.ssl.HttpsClientHelper

时间:2016-01-18 08:42:20

标签: java web-services rest jetty restlet

我正在使用以下库来休息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>

帮助我解决这个问题。

2 个答案:

答案 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客户端)。

简单地将它放在类路径或应用程序中。

希望它可以帮到你, 亨利