我使用Google Appengine for Java(GAE/J).最重要的是,我使用Jersey REST框架.
现在我想运行本地JUnit测试.考试
不幸的是,Jersey/Jetty组合产生了新的线程.GAE期望只运行一个线程.最后,我最终在Jersey-resources内部没有数据存储区,也没有多个数据存储区.
作为一种解决方法,我只将GAE本地环境初始化一次,将其置于静态变量中,并在GAE资源内部添加许多检查(此线程没有开发环境?重新使用静态环境变量).而这些检查当然应该只内JUnit测试运行..(我问过:"我怎么可以找出代码是JUnit测试中运行或不" -我不能直接在这里发布的链接: - |)
我正在使用Noir和clojure编写一个Web应用程序,它使用Jetty.Jetty有两种使用gzip的方法,一种用于静态,一种用于动态,它们在/sf/answers/637919061/中有描述.我想打开静态和动态gzipping,但我们的项目不使用web.xml文件,也不想启动.
如何以编程方式设置jetty以使用gzip(即没有web.xml)?
我曾经在本地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) 我正在尝试在嵌入式Jetty服务器上部署Web应用程序.我的应用程序在Windows环境中使用下面的代码在本地运行良好,但是当我在Linux服务器上将其部署为JAR文件时,看起来我的web.xml文件没有被选中.在构建JAR之前,我是否需要在下面的Descriptor或ResourceBase字段中更改某些内容?
static void startJetty() {
try {
Server server = new Server(9090);
WebAppContext context = new WebAppContext();
context.setDescriptor("/WEB-INF/web.xml");
context.setResourceBase("../DemoWithMultiChannels/src/");
context.setContextPath("/");
context.setParentLoaderPriority(true);
server.setHandler(context);
System.out.println("Starting Server!");
server.start();
Run Code Online (Sandbox Code Playgroud) 我有一个jetty服务器来运行我的Web服务.最近我开发了一个使用Web服务的程序并遇到了Access-Control-Allow-Origin问题.
如何将Access-Control-Allow-Origin:*添加到jetty嵌入式服务器.
下面是webappcontext代码.
public WebAppContext buildWebAppContext(){
webAppContext = new WebAppContext();
webAppContext.setDescriptor(webAppContext + "/WEB-INF/web.xml");
webAppContext.setResourceBase(".");
webAppContext.setContextPath("/posApplication");
webAppContext.setAttribute("webContext", webAppContext);
return webAppContext;
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
我正在尝试配置嵌入式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) 我不明白我怎么能改写用于jetty 6的jetty 6的代码:
import org.mortbay.jetty.*;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.webapp.WebAppContext;
public class ApplLauncher {
public static void main(String[] args) {
Server server = new Server();
Connector connector = new SelectChannelConnector();
connector.setPort(8080);
server.addConnector(connector);
WebAppContext root = new WebAppContext("C:\\Users\\OZKA\\IdeaProjects\\projectname\\projectname\\web", "/");
root.setWelcomeFiles(new String[]{"index.html"});
//root.addServlet(new ServletHolder(new TestServlet()), "/test");
server.setHandlers(new Handler[]{root});
try {
server.start();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常,并响应web.xml中映射的web文件夹和servlet中的静态内容.这是我尝试使用嵌入式码头9:
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;
import org.eclipse.jetty.server.handler.ResourceHandler;
import org.eclipse.jetty.server.handler.HandlerList;
import org.eclipse.jetty.server.Handler;
public class ApplLauncher {
public static void …Run Code Online (Sandbox Code Playgroud) 我正在使用spring boot(截至目前为1.2.1),我需要增加默认的8k请求头大小限制,该限制存在HttpConfiguration于Jetty的类中.看看JettyEmbeddedServletContainerFactory哪些我可以掌握,EmbeddedServletContainerCustomizer但无法看到如何改变它的方式.
我也确实看了一下JettyServerCustomizer- 我明白我可以Server通过它再次抓住码头- 没办法怎么改变HttpConfiguration这里.
任何提示将不胜感激.
我正在玩Spark(Java Web框架,而不是Apache Spark).
我觉得定义路由和过滤器真的很好很容易,但是我希望在我的路由中应用本机servlet过滤器,似乎无法找到一种方法.
更具体地说,我想使用Jetty的DoSFilter,它是一个servlet过滤器(与Spark Filter定义形成对比).由于Spark使用嵌入式Jetty,我没有web.xml来注册DoSFilter.但是,Spark不会公开服务器实例,所以我找不到以编程方式注册过滤器的优雅方式.
有没有办法将本机servlet过滤器应用于我的路由?
我想把DoSFilter包装在我自己的Spark Filter中,但这似乎是一个奇怪的想法.
我定义了我的REST方法,以返回String数据类型作为对http请求的响应.就是这个:
@Path("/users/{name}/")
@GET
@Produces("application/json")
public String getAllUserMemberships(@PathParam("name") String name) throws Exception{
String doc = "{\"name\":\""+name+"\",\"message\":\"Logged in\"}";
return doc;
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,但有人告诉我宁愿返回一个javax.ws.rs.core.Response对象,如下面的示例代码所示.这也很好,他说这是响应HTTP请求的最佳方式但他不知道为什么.
@Path("/users/{name}/")
@GET
@Produces("application/json")
public Response getAllUserMemberships(@PathParam("name") String name) throws Exception{
String doc = "{\"name\":\""+name+"\",\"message\":\"Logged in\"}";
return Response.ok(doc, MediaType.APPLICATION_JSON).build();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:当你可以返回一个String时,是否有必要将Response对象返回给HTTP请求.如果有必要,请告诉我为什么因为对于HTTP请求而言哪一个是正确的.我也担心Response对象可能会给我一些我可能无法处理的问题.
embedded-jetty ×10
java ×5
jetty ×4
jersey ×3
servlets ×2
clojure ×1
jetty-9 ×1
junit ×1
maven ×1
rest ×1
spark-java ×1
spring-boot ×1
tomcat ×1
web.xml ×1