我正在寻找从嵌入式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?
谢谢,安迪
我正在尝试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服务器.服务器必须只加载一个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).
我正在使用Tomcat来为我的Java Servlet提供服务,这对我来说更有用.我只需要服务,单独使用Servlet请求,没有静态内容,也不需要JSP等.所以我一直在寻找可以嵌入到我的应用程序中的Servlet容器.我觉得如果剥离Jetty并单独使用它作为Servlet容器,它可以更具可扩展性并占用很小的内存空间,[我不需要Jetty的'Web Server'和其他部件].所以我有几个问题,
我打算用我的应用程序提供API请求,我正在寻找性能和可伸缩性作为主要约束.当然还有Servlet 3.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应用程序中嵌入了Jetty,并在Jetty服务器对象的实例上调用了start()方法(在设置了描述静态和动态Web内容位置的处理程序列表之后).start()调用是否阻塞,直到初始化完成?如果没有,我如何确定服务器何时完全启动并准备好接收请求?
我在Eclipse中有一个Scala项目需要打包,所以我可以将它部署到服务器上.它基于Jetty,但它作为独立的应用程序运行.它包含Scala类,Java类和许多第三方jar.
我假设在Scala Eclipse插件中会有某种部署选项,但我画了一个空白.
将Scala项目打包成可运行文件的最简单方法是什么,以便可以部署?
任何帮助非常感谢.干杯.
我有一个使用嵌入式Jetty作为服务器的REST应用程序.大多数端点需要公开可见(并且内置适当的身份验证),但有一些仅供内部使用.我想避免对这些进行身份验证的开销,而是使用防火墙来限制访问:
外部可见端点在端口10000上提供,外部防火墙保持打开状态.内部可见端点在端口20000上提供,外部防火墙阻止这些端点.
但是,我无法弄清楚如何使用嵌入式Jetty来实现这一点.我已经尝试实例化两个Server对象,一个在端口10000上,注册了相应的servlet处理程序,另一个在端口20000上注册了相应的servlet处理程序.但是,只有第二个启动的服务器实例才能工作; 对由一个主机托管的端点的请求首先导致404响应.
Jetty文档讨论了如何使用*.xml配置执行此操作,但不适用于嵌入式实例.
有什么想法或想法吗?或者是否有更好的方法来实现我之后的内部/外部端点隔离?硬性要求是内部和外部端点都需要在同一个JVM中"运行".
事实证明,问题与使用Guice和Guice-servlets扩展(问题618和635)有关.运行两个嵌入式Jetty实例的工作正常,如James Kingsbery在下面的回答中所述.
Guice使用在服务器上下文中注册的过滤器(GuiceFilter)来获取需要请求范围的依赖注入(DI)的请求以及构建需要DI的servlet和过滤器.不幸的是,它使用静态对象来管理与之关联的servlet和过滤器列表.
在一个典型的设置中,guice-servlet.jar包含GuiceFilter在每个应用程序中,因此由每个应用程序的不同类加载器加载---一切正常.嵌入式Jetty不是这样,基本上所有内容都由默认的系统类加载器加载.
Guice的最新master(commit fbbb52dcc92e)包含一个更新的GuiceFilter对FilterPipeline对象的动态引用(导致问题的静态对象)的支持.不幸的是,注入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) 我正在使用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) 我正在构建一个带有嵌入式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)
我怎样才能启用所有火花记录?