标签: embedded-jetty

如何使用嵌入式jetty在给定地址处提供特定的类路径资源?

我正在寻找从嵌入式jetty服务器公开clientacesspolicy.xml文件.

我目前的尝试看起来像这样:

ContextHandler capHandler = new ContextHandler();
capHandler.setContextPath("/clientaccesspolicy.xml");
capHandler.setBaseResource(Resource.newClassPathResource("clientaccesspolicy.xml"));
HandlerList handlers = new HandlerList();
handlers.addHandler(capHandler);
...
httpServer.setHandler(handlers);
Run Code Online (Sandbox Code Playgroud)

但我得到404访问http:// localhost:9000/clientaccesspolicy.xml

如何在Jetty中以编程方式将类路径资源公开给给定的URL?

谢谢,安迪

java jetty embedded-jetty

13
推荐指数
2
解决办法
6749
查看次数

Jetty 8没有web.xml设置"session-timeout"?

我正在尝试session-timeout在嵌入式Jetty 8实例中设置值.

使用嵌入式Jetty,如何以编程方式设置session-timeout否则将在web.xml中设置的值,如下所示:

 <session-config>
     <session-timeout>15</session-timeout>
 </session-config>
Run Code Online (Sandbox Code Playgroud)

谢谢!

jetty session-timeout embedded-jetty

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

启动嵌入式Jetty服务器的最短代码

我正在编写一些示例代码,其中启动了嵌入式Jetty服务器.服务器必须只加载一个servlet,将所有请求发送到servlet并监听localhost:80

我的代码到目前为止:

static void startJetty() {
        try {
            Server server = new Server();

            Connector con = new SelectChannelConnector();
            con.setPort(80);
            server.addConnector(con);

            Context context = new Context(server, "/", Context.SESSIONS);
            ServletHolder holder = new ServletHolder(new MyApp());
            context.addServlet(holder, "/*");

            server.start();
        } catch (Exception ex) {
            System.err.println(ex);
        }

    }
Run Code Online (Sandbox Code Playgroud)

我可以用更少的代码/行来做同样的事情吗?(使用Jetty 6.1.0).

java jetty embedded-jetty

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

将Jetty作为Servlet容器嵌入

我正在使用Tomcat来为我的Java Servlet提供服务,这对我来说更有用.我只需要服务,单独使用Servlet请求,没有静态内容,也不需要JSP等.所以我一直在寻找可以嵌入到我的应用程序中的Servlet容器.我觉得如果剥离Jetty并单独使用它作为Servlet容器,它可以更具可扩展性并占用很小的内存空间,[我不需要Jetty的'Web Server'和其他部件].所以我有几个问题,

  1. 如何在我的应用程序代码中嵌入Jetty以单独提供Servlet请求?
  2. 如果我在我的应用程序代码中嵌入Jetty代码,我是否可以轻松升级Jetty版本?
  3. 我在这里得到了Jetty代码,如果我必须在我的应用程序中嵌入Jetty的Servlet容器,我应该从源代码中使用它, http://git.eclipse.org/c/jetty/org.eclipse.jetty.project. git/snapshot/jetty-9.0.3.v20130506.tar.bz2,jetty-9.0.3.v20130506/jetty-servlet或jetty-9.0.3.v20130506/jetty-servlets

我打算用我的应用程序提供API请求,我正在寻找性能和可伸缩性作为主要约束.当然还有Servlet 3.0支持.

java servlets embedded-jetty

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

如何使用嵌入式jetty v 9.1.0设置端口和线程池

我正在使用jetty 9.1.0,嵌入式,并且想要设置端口和ThreadPool.我看到了每个的构造函数,但是没有看到如何使用其中的一个,然后以任何方式设置另一个.

这样做

Server server = new Server(9090);
Run Code Online (Sandbox Code Playgroud)

要么

Server server = new Server(new QueuedThreadPool(100, 10));
Run Code Online (Sandbox Code Playgroud)

但是在服务器上没有setPort或setThreadPool.

java embedded-jetty

12
推荐指数
2
解决办法
4198
查看次数

检测嵌入式Jetty服务器何时完全初始化

我在一个java应用程序中嵌入了Jetty,并在Jetty服务器对象的实例上调用了start()方法(在设置了描述静态和动态Web内容位置的处理程序列表之后).start()调用是否阻塞,直到初始化完成?如果没有,我如何确定服务器何时完全启动并准备好接收请求?

jetty embedded-jetty

11
推荐指数
2
解决办法
2484
查看次数

如何从Eclipse部署Scala项目?

我在Eclipse中有一个Scala项目需要打包,所以我可以将它部署到服务器上.它基于Jetty,但它作为独立的应用程序运行.它包含Scala类,Java类和许多第三方jar.

我假设在Scala Eclipse插件中会有某种部署选项,但我画了一个空白.

将Scala项目打包成可运行文件的最简单方法是什么,以便可以部署?

任何帮助非常感谢.干杯.

eclipse scala jetty embedded-jetty

11
推荐指数
2
解决办法
4865
查看次数

嵌入式Jetty:内部和外部可见端点的不同端口?

我有一个使用嵌入式Jetty作为服务器的REST应用程序.大多数端点需要公开可见(并且内置适当的身份验证),但有一些仅供内部使用.我想避免对这些进行身份验证的开销,而是使用防火墙来限制访问:

外部可见端点在端口10000上提供,外部防火墙保持打开状态.内部可见端点在端口20000上提供,外部防火墙阻止这些端点.

但是,我无法弄清楚如何使用嵌入式Jetty来实现这一点.我已经尝试实例化两个Server对象,一个在端口10000上,注册了相应的servlet处理程序,另一个在端口20000上注册了相应的servlet处理程序.但是,只有第二个启动的服务器实例才能工作; 对由一个主机托管的端点的请求首先导致404响应.

Jetty文档讨论了如何使用*.xml配置执行此操作,但不适用于嵌入式实例.

有什么想法或想法吗?或者是否有更好的方法来实现我之后的内部/外部端点隔离?硬性要求是内部和外部端点都需要在同一个JVM中"运行".


编辑

事实证明,问题与使用Guice和Guice-servlets扩展(问题618635)有关.运行两个嵌入式Jetty实例的工作正常,如James Kingsbery在下面的回答中所述.

Guice使用在服务器上下文中注册的过滤器(GuiceFilter)来获取需要请求范围的依赖注入(DI)的请求以及构建需要DI的servlet和过滤器.不幸的是,它使用静态对象来管理与之关联的servlet和过滤器列表.

在一个典型的设置中,guice-servlet.jar包含GuiceFilter在每个应用程序中,因此由每个应用程序的不同类加载器加载---一切正常.嵌入式Jetty不是这样,基本上所有内容都由默认的系统类加载器加载.

解决Guice问题

Guice的最新master(commit fbbb52dcc92e)包含一个更新的GuiceFilterFilterPipeline对象的动态引用(导致问题的静态对象)的支持.不幸的是,注入FilterPipeline实例的构造函数是package-private.因此,要使用它,您需要在com.google.inject.servlet包中公开该构造函数创建一个包装类:

package com.google.inject.servlet;

import com.google.inject.Inject;

public class NonStaticGuiceFilter extends GuiceFilter {

    /**
     * Do not use. Must inject a {@link FilterPipeline} via the constructor.
     */
    @SuppressWarnings("unused")
    private NonStaticGuiceFilter() {
        throw new IllegalStateException();
    }

    @Inject
    public NonStaticGuiceFilter(FilterPipeline filterPipeline) {
        super(filterPipeline);
    }

}
Run Code Online (Sandbox Code Playgroud)

要使用此类,请使用ServletModule已安装的注入器创建实例,并将其注册到Jetty Context:

// …
Run Code Online (Sandbox Code Playgroud)

java jetty embedded-jetty

11
推荐指数
1
解决办法
2771
查看次数

如何使用jetty.port覆盖jetty.xml

我正在使用maven-jetty-plugin并尝试使用-Djetty.port = 8090覆盖我的jetty.xml设置,但它不起作用.只有当我从jetty.xml文件中删除连接器部分时,才会将端口设置为8090.

所以:

 mvn jetty:run -Djetty.port=8090
Run Code Online (Sandbox Code Playgroud)

连接器从端口8080开始

没有连接器在端口8090中启动

问题是我需要配置接受器,统计和其他东西.我尝试只从连接器中删除端口,但它不起作用.

我正在使用:

JAVA 1.7_05
MAVEN 3.0.4
Jetty 8.1.4
Linux Ubuntu 12.04 64bits
Run Code Online (Sandbox Code Playgroud)

这是我的pom.xml插件配置:

<plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>8.1.4.v20120524</version>
            <configuration>
                <stopKey>foo</stopKey>
                <stopPort>9990</stopPort>
                <jettyXml>src/main/webapp/WEB-INF/jetty.xml</jettyXml>
            </configuration>
            <executions>
                <execution>
                    <id>start-jetty</id>
                    <!-- <phase>pre-integration-test</phase> -->
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <scanIntervalSeconds>0</scanIntervalSeconds>
                    </configuration>
                </execution>
                <execution>
                    <id>stop-jetty</id>
                    <!-- <phase>post-integration-test</phase> -->
                    <goals>
                        <goal>stop</goal>
                    </goals>
                </execution>
            </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

Jetty.xml连接器conf:

<Call name="addConnector">
  <Arg>
      <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
        <Set name="host"><Property name="jetty.host" /></Set>
        <Set name="port"><Property name="jetty.port" default="8080"/></Set>
        <Set name="maxIdleTime">300000</Set>
        <Set name="Acceptors">4</Set>
        <Set name="statsOn">false</Set>
        <Set name="confidentialPort">8443</Set>
    <Set name="lowResourcesConnections">20000</Set>
    <Set …
Run Code Online (Sandbox Code Playgroud)

java jetty embedded-jetty maven maven-jetty-plugin

11
推荐指数
2
解决办法
3万
查看次数

Java spark框架启用日志记录

我正在构建一个带有嵌入式Jetty和Handlebars模板引擎的Spark框架的Java应用程序.但是当我得到500内部错误时,控制台没有说什么.我已经在我的pom.xml中添加了依赖项:http://sparkjava.com/documentation.html#add-a-logger 但不会打印所有异常/错误(如错误500)

在这里我的pom.xml dependecies

<dependencies>

    <!-- FRAMEWORK:     Spark -->
    <dependency>
        <groupId>com.sparkjava</groupId>
        <artifactId>spark-core</artifactId>
        <version>2.5</version>
    </dependency>

    <!-- TEMPLATES:     Handlebars -->
    <dependency>
        <groupId>com.sparkjava</groupId>
        <artifactId>spark-template-handlebars</artifactId>
        <version>2.3</version>
    </dependency>

    <!-- DB-MAPPING:    sql2o -->
    <dependency>
        <groupId>org.sql2o</groupId>
        <artifactId>sql2o</artifactId>
        <version>1.5.4</version>
    </dependency>

    <!-- DRIVERS: sqlite-->
    <dependency>
        <groupId>org.xerial</groupId>
        <artifactId>sqlite-jdbc</artifactId>
        <version>3.8.11.2</version>
    </dependency>

    <!-- LOGGER:        slf4j -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.21</version>
    </dependency>

</dependencies>
Run Code Online (Sandbox Code Playgroud)

我怎样才能启用所有火花记录?

java jetty embedded-jetty maven spark-framework

11
推荐指数
2
解决办法
7150
查看次数