标签: embedded-jetty

以编程方式向Jetty添加资源

我有一个主类配置和启动Jetty.(这是Wicket测试webapp的标准做法,但它确实不是特定于wicket的.)

final Server server = new Server();
//skipped socketconnector initialization

final WebAppContext bb = new WebAppContext();
bb.setServer(server);
bb.setContextPath("/");
bb.setWar("src/main/webapp");
server.addHandler(bb);
server.start();
Run Code Online (Sandbox Code Playgroud)

如您所见,src/main/webapp用作webapp root.但是,我有一些目标/类中的资源,稍后会复制到webapp.所以我想向jetty添加虚拟目录.

我想映射target/classes/js/jstarget/classes/css/css

有人可以帮忙吗?

顺便说一句:这是码头6.1.4

java jetty embedded-jetty

7
推荐指数
2
解决办法
9550
查看次数

程序化Jetty关闭

如何以编程方式关闭嵌入式jetty服务器?

我像这样启动jetty服务器:

Server server = new Server(8090);
...
server.start();
server.join();
Run Code Online (Sandbox Code Playgroud)

现在,我想从请求中关闭它,例如http://127.0.0.1:8090/shutdown 如何干净利落地完成它?

通常提出的解决方案是创建一个线程并从该线程调用server.stop().但我可能需要调用Thread.sleep()以确保servlet已完成处理关闭请求.

java jetty embedded-jetty

7
推荐指数
2
解决办法
1万
查看次数

如何使用嵌入式Jetty设置静态资源和自定义服务?

我试图通过嵌入Jetty为我的应用程序设置一个简单的Web服务.我想提供两种不同的Web服务,一种简单的HTTP服务器,它只提供静态内容(最终将是一个GWT应用程序)和一个可以为应用程序吐出JSON状态消息的自定义servlet.

我的分发文件夹结构如下所示:

+ dist/
  - MyApp.jar
  + lib/
  + html/
    - index.html
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止配置嵌入式服务器的方法.我在访问时正确地从我的自定义servlet获取测试输出http://localhost/data/,但我似乎无法让DefaultServlet找到我的index.html文件.

public Webserver(int port) {
    server = new Server(port);

    ServletContextHandler context = new ServletContextHandler();
    context.setResourceBase("./html/");
    server.setHandler(context);


    JsonDataApiServlet dataServlet = new JsonDataApiServlet();
    DefaultServlet staticServlet = new DefaultServlet();

    context.addServlet(new ServletHolder(dataServlet), "/data/*");
    context.addServlet(new ServletHolder(staticServlet), "/*");
}
Run Code Online (Sandbox Code Playgroud)

对于将Jetty嵌入到东西中的人来说,这似乎是一项普遍的任务.我是否在正确的轨道上?

编辑

原来这个问题是由于误解了Jetty内部相对路径的计算方式.我是从dist文件夹上方的一个文件夹中运行它,使用java -jar dist\MyApp.jar,而Jetty正在寻找dist\..\html而不是正确的dist\html.从dist文件夹内运行jar可以解决问题.我将回答我是如何工作的,而不必从dist目录中运行.

java jetty embedded-jetty

7
推荐指数
1
解决办法
5976
查看次数

Jetty中的ServletHandler和ServletContextHandler有什么区别?

我正在尝试使用嵌入式Jetty服务器.我只想根据请求路径将请求映射到不同的servlet.

创建ServletHandler和添加servlet与创建和添加servlet相比有什么区别ServletContextHandler

例如:

//how is this different...
ServletHandler handler = new ServletHandler();
handler.addServletWithMapping(MyServlet.class, "/path");

//from this?
ServletContextHandler contextHandler = new ServletContextHandler();
contextHandler.addServlet(MyServlet.class, "/path");
Run Code Online (Sandbox Code Playgroud)

java servlets jetty embedded-jetty

7
推荐指数
1
解决办法
9469
查看次数

为maven添加jar到jetty插件

我曾经在本地tomcat服务器上部署我的WAR,并在libtomcat 的文件夹中有一个jackson-core.jar .现在,我已切换到maven并使用jetty插件.

一切正常,但406 error - The server responded with 406 error (Not acceptable)我知道错误即将到来,因为app server(jetty)中没有jackson-core.jar.

题:

如何将jar放在嵌入式jetty的lib文件夹中,就像我为独立的tomcat服务器所做的那样.这可能吗?

我尝试过以下方法:

<configuration>
  <scanIntervalSeconds>5</scanIntervalSeconds>
  <webAppConfig>
  <contextPath>/myapp</contextPath>
  <extraClasspath>/Users/myuser/Downloads/jackson-core-2.1.0.jar</extraClasspath>
  </webAppConfig> 
</configuration>
Run Code Online (Sandbox Code Playgroud)

tomcat embedded-jetty maven maven-jetty-plugin

6
推荐指数
1
解决办法
2777
查看次数

如何配置嵌入式jetty来访问Jersey资源?

我正在尝试配置嵌入式jetty来与我的Jersey资源交谈,但我无法弄清楚如何做到这一点.我尝试过几种不同的东西但似乎没什么用.jetty教程并没有真正处理如何使用Jersey.任何代码建议或链接都​​非常感谢

编辑:

 package pojo;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.DefaultServlet;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.glassfish.jersey.servlet.ServletContainer;

public class Main {

    public static void main(String[] args) throws Exception {
        Server server = new Server(8112);
        ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
        context.setContextPath("/");
        server.setHandler(context);
        ServletHolder h = new ServletHolder(new ServletContainer());
        h.setInitParameter("com.sun.jersey.config.property.resourceConfigClass", "com.sun.jersey.api.core.PackagesResourceConfig");
        h.setInitParameter("com.sun.jersey.config.property.packages", "resources");
        h.setInitOrder(1);
        context.addServlet(h, "/*");
        try
        {
            server.start();
            server.join();
        }
        catch (Throwable t)
        {
            t.printStackTrace(System.err);
        }
Run Code Online (Sandbox Code Playgroud)

试图连接到这个类:

package resources;


import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Request;
import …
Run Code Online (Sandbox Code Playgroud)

java jetty jersey embedded-jetty

6
推荐指数
1
解决办法
7199
查看次数

使用Spring Boot自定义Jetty的HttpConfiguration

我正在使用spring boot(截至目前为1.2.1),我需要增加默认的8k请求头大小限制,该限制存在HttpConfiguration于Jetty的类中.看看JettyEmbeddedServletContainerFactory哪些我可以掌握,EmbeddedServletContainerCustomizer但无法看到如何改变它的方式.

我也确实看了一下JettyServerCustomizer- 我明白我可以Server通过它再次抓住码头- 没办法怎么改变HttpConfiguration这里.

任何提示将不胜感激.

embedded-jetty spring-boot jetty-9

6
推荐指数
1
解决办法
2453
查看次数

使用Spark Web框架时如何使用本机Servlet过滤器?

我正在玩Spark(Java Web框架,而不是Apache Spark).

我觉得定义路由和过滤器真的很好很容易,但是我希望在我的路由中应用本机servlet过滤器,似乎无法找到一种方法.

更具体地说,我想使用Jetty的DoSFilter,它是一个servlet过滤器(与Spark Filter定义形成对比).由于Spark使用嵌入式Jetty,我没有web.xml来注册DoSFilter.但是,Spark不会公开服务器实例,所以我找不到以编程方式注册过滤器的优雅方式.

有没有办法将本机servlet过滤器应用于我的路由?

我想把DoSFilter包装在我自己的Spark Filter中,但这似乎是一个奇怪的想法.

servlets embedded-jetty servlet-filters spark-java

6
推荐指数
1
解决办法
1173
查看次数

作为嵌入式服务器运行时Jetty自定义错误页面

在将Jetty作为嵌入式服务器运行时,如何覆盖默认错误页面(以"Powered by Jetty"为后缀)?

Server server = new Server(8080);
server.setHandler(new Handler());

/* configure custom error pages? */

server.start();
server.join();
Run Code Online (Sandbox Code Playgroud)

jetty embedded-jetty

6
推荐指数
1
解决办法
3404
查看次数

如何在 ODL 控制器中配置拒绝服务过滤器

我是 ODL 控制器和嵌入式码头的新手。如果有请求泛滥,我想在 jetty.xml 中添加 DoSFilter 来限制 REST 请求。

我尝试在互联网上搜索,但在 web.xml DoSFilter 中有很多配置它的示例,但没有找到对 jetty.xml 的太多帮助

在 jetty.xml 中配置 DoSFilter 的任何帮助都会有很大帮助。

ODL - 氮气版本

码头 - 9.2.21.X 版本

以下是我迄今为止尝试过的选项。

在 jetty.xml 中配置的过滤器:

    <Get name="handler">
        <Call name="addHandler">
            <Arg>
                <New class="org.eclipse.jetty.servlet.ServletContextHandler">
                    <Set name="contextPath">/</Set>
                    <Set name="resourceBase">../</Set>
                    <Call name="addFilter">
                        <Arg>
                            <New class="org.eclipse.jetty.servlet.FilterHolder">
                                <Arg>
                                    <New class="org.eclipse.jetty.servlets.DoSFilter" />
                                </Arg>
                                <Call name="setInitParameter">
                                    <Arg>maxRequestsPerSec</Arg>
                                    <Arg>30</Arg>
                                </Call>
                                <Call name="setInitParameter">
                                    <Arg>delayMs</Arg>
                                    <Arg>100</Arg>
                                </Call>
                                <Call name="setInitParameter">
                                    <Arg>maxRequestMs</Arg>
                                    <Arg>0</Arg>
                                </Call>
                                <Call name="setInitParameter">
                                    <Arg>maxIdleTrackerMs</Arg>
                                    <Arg>0</Arg>
                                </Call>
                                <Call name="setInitParameter">
                                    <Arg>ipWhitelist</Arg>
                                    <Arg>127.0.0.1</Arg>
                                </Call>
                            </New>
                        </Arg> …
Run Code Online (Sandbox Code Playgroud)

java servlets jetty embedded-jetty opendaylight

6
推荐指数
1
解决办法
348
查看次数