我想使用在restlet jar文件中作爲擴展提供的jetty連接器。我將下面的jar添加到我的Restlet應用程序包的類路徑中。配置Restlet在OSGi中使用Jetty連接器(非簡單連接器)
org.restlet.ext.jetty.jar
我的HTTP或HTTPS服務器添加到組件等的下方。
private Component m_Component = new Component();
private void addHTTPServer() throws Exception
{
m_Component.getServers().add(Protocol.HTTP, 8484);
}
private void addHTTPsServer() throws Exception
{
File keystore = new File(m_KeyStoreFile);
Server server = m_Component.getServers().add(Protocol.HTTPS, 8484);
Series<Parameter> parameters = server.getContext().getParameters();
parameters.add("keystorePath", keystore.toPath().toString());
parameters.add("keystorePassword", "Localstorepass");
parameters.add("keystoreType", "JKS");
parameters.add("keyPassword", "Localkeypass");
}
這是服務器啓動時的輸出。
2015年12月8日上午11點44分59秒org.restlet.engine.connector.NetServerHelper 開始
INFO:啓動端口內部[HTTPS/1.1]服務器8484
十二月08,2015年上午11點44分59秒開始org.restlet.Application
信息:啓動de.hsag.services.restlet.application.RestletApplication 應用
是否有一個選項可以將其配置爲直接使用Jetty作爲服務器連接器?
更新:
正如在下面確保我初始化組件org.restlet.ext.jetty.jar束激活後的伎倆的答覆中提到。 所以我讓我的restlet激活器類實現了BundleListener接口,並在BundleEvent顯示我激活碼頭擴展jar時啓動組件。
@Override
public void bundleChanged(BundleEvent event)
{
if(event.getBundle().getSymbolicName().equalsIgnoreCase("org.restlet.ext.jetty")) {
if(event.getBundle().getState() == Bundle.ACTIVE) {
private Component m_Component = new Component();
m_Component.getServers().add(Protocol.HTTP, 8484);
...
}
}
}
另外,我爲jetty添加了以下jar文件。
javax.servlet.jar
org.eclipse.jetty.http.jar
org.eclipse.jetty.io.jar
org.eclipse.jetty.server.jar
org.eclipse.jetty.util.jar
現在我可以看到,碼頭被自動地選擇:
> Dec 11, 2015 12:36:23 AM org.restlet.ext.jetty.JettyServerHelper start
> INFO: Starting the Jetty [HTTPS/1.1] server on port 8484