Tag: docker

如何禁用Jetty的WebAppContext的目录列表?

我将Jetty(版本7.4.5.v20110725)嵌入到java应用程序中。 我使用Jetty的WebAppContext在./webapps/jsp/中提供JSP页面,但是如果我访问localhost:8080 / jsp /我获取Jetty的目录列表以获取./webapps/jsp/的全部内容。 我已经尝试在WebAppContext上将dirAllowed参数设置为false,并且它不会更改目录列表行为。 在ResourceHandler上禁用目录列表就是将false传递给setDirectoriesListed,按预期工作。 有人可以告诉我如何为WebAppContext执行此操作吗? import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.ContextHandler; import org.eclipse.jetty.server.handler.HandlerList; import org.eclipse.jetty.server.handler.ResourceHandler; import org.eclipse.jetty.server.nio.SelectChannelConnector; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; import org.eclipse.jetty.webapp.WebAppContext; public class Test { public static void main(String[] args) throws Exception { Server server = new Server(); SelectChannelConnector connector = new SelectChannelConnector(); connector.setHost(“127.0.0.1”); connector.setPort(8080); server.addConnector(connector); // Create a resource […]

从本地计算机连接到Docker中运行的Kafka

我在本地计算机上使用docker设置单节点基本Kafka部署,如Confluent Kafka文档中所述 (步骤2-3)。 另外,我还暴露了zookeeper的端口2181和kafka的端口9092,这样我就能从本地机器上运行的java客户端连接到它们: $ docker run -d \ -p 2181:2181 \ –net=confluent \ –name=zookeeper \ -e ZOOKEEPER_CLIENT_PORT=2181 \ confluentinc/cp-zookeeper:4.1.0 $ docker run -d \ –net=confluent \ –name=kafka \ -p 9092:9092 \ -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092 \ -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \ confluentinc/cp-kafka:4.1.0 问题:当我尝试从主机连接到kafka时,连接失败,因为它无法解析地址:kafka:9092。 这是我的Java代码: Properties props = new Properties(); props.put(“bootstrap.servers”, “localhost:9092”); props.put(“client.id”, “KafkaExampleProducer”); props.put(“key.serializer”, LongSerializer.class.getName()); […]

为什么HttpServletRequest输入流为空?

我有这个代码,我从请求输入流中读取输入并使用JacksonMapper转换为POJO。 它在一个带有guice支撑的docker7容器中运行。 @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { try { RequestType requestType = mapper.readValue(req.getInputStream(), RequestType.class); } Catch(Exception ex) { …. } } 但是,有时在加载时会抛出以下exception。 我检查了我的客户端,我确信它发送了一个有效的json字符串。 出了什么问题? Jetty 7在负载下的预期行为是什么? java.io.EOFException: No content to map to Object due to end of input at org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:2433) at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2385) at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1637) at com.ea.wsop.user.LoginServlet.processRequest(LoginServlet.java:69) at com.ea.wsop.user.LoginServlet.doPost(LoginServlet.java:63) at […]

泽西岛:如何将jackson添加到Servlet Holder

我正在使用Jersey创建一个嵌入式Jetty webapp。 我不知道如何在这里添加jackson自动JSON serde: ServletHolder jerseyServlet = context.addServlet( org.glassfish.jersey.servlet.ServletContainer.class, “/*”); jerseyServlet.setInitOrder(0); jerseyServlet.setInitParameter( ServerProperties.PROVIDER_CLASSNAMES, StringUtils.join( Arrays.asList( HealthCheck.class.getCanonicalName(), Rest.class.getCanonicalName()), “;”)); // Create JAX-RS application. final Application application = new ResourceConfig() .packages(“com.example.application”) .register(JacksonFeature.class); // what do I do now to tie this to the ServletHolder? 如何在ServletHolder中注册此ResourceConfig ,以便在使用注释@Produces(MediaType.APPLICATION_JSON)使用Jackson? 这是嵌入式Jetty应用程序的完整主类 package com.example.application.web; import com.example.application.api.HealthCheck; import com.example.application.api.Rest; import com.example.application.api.Frontend; import org.apache.commons.lang.StringUtils; […]

如何在会话无效后强制Jetty使用BASIC身份validation请求凭据?

我正在使用带有BASIC身份validation的jetty 6.1.22作为我的登录机制。 我第一次登录Web应用程序时,浏览器会请求用户名和密码。 如果它尝试使用session.invalidate()注销,则会话无效但凭据将被缓存。 这意味着如果我尝试连接到安全的URL,我将看到不同的会话ID,但没有用户名和密码的对话框。

NoClassDefFoundError:org / w3c / dom / ElementTraversal

我按照本指南安装了Jetty 7并为IdP Shibboleth配置了它正确: https ://wiki.shibboleth.net/confluence/display/SHIB2/IdPJetty7Prepare 但是,当我尝试启动Jetty时,我收到此错误: NoClassDefFoundError: org/w3c/dom/ElementTraversal 要解决此问题,我需要安装ElementTraversal依赖项并将其包含在我的类路径中 。 但我怎么能做到这一点? 我是否需要下载此类[ElementTraversal.class]或.jar文件? 我可以放在哪里? 在JETTY_HOME ? 我需要导出CLASSPATH吗? 有人能帮我吗? 非常感谢!

如何让Jetty动态加载“静态”页面

我正在构建Java Web应用程序,我讨厌传统的“代码 – 编译 – 部署 – 测试”循环。 我想键入一个微小的更改,然后立即查看结果,而无需编译和部署。 幸运的是, Jetty非常适合这一点。 它是一个纯java的Web服务器。 它附带了一个非常好的maven插件 ,可以直接从构建树中启动Jetty读取 – 无需打包war文件或部署。 它甚至还有一个scanInterval设置:将它设置为非零值,它将监视您的java文件和各种配置文件以进行更改,并在您进行更改后自动重新部署几秒钟。 只有一件事让我远离天堂。 我的src / main / webapp目录中有javascript和css文件,这些文件只能由Jetty提供。 我希望能够编辑这些并在浏览器中刷新页面时显示更改。 不幸的是,Jetty将这些文件保持打开状态,因此我无法(在Windows上)在运行时修改它们。 有谁知道如何让Jetty放开这些文件,以便我可以编辑它们,然后为后续请求提供编辑后的文件?

docker十字架filter

我已配置Jetty的跨源filter,但我继续收到以下错误。 有谁知道什么是错的以及如何解决它? 错误消息下面是我的覆盖描述符(即补充web.xml) 错误: Origin http://localhost:8090 is not allowed by Access-Control-Allow-Origin. 覆盖描述符: cross-origin org.eclipse.jetty.servlets.CrossOriginFilter allowedOrigins * allowedMethods * allowedHeaders * cross-origin /* 请求标题 Accept:*/* Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3 Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en;q=0.8 Access-Control-Request-Headers:Origin, Content-Type, Accept Access-Control-Request-Method:POST Connection:keep-alive Host:localhost:8080 Origin:http://localhost:8090 Referer:http://localhost:8090/home User-Agent:Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.8 (KHTML, like Gecko) Chrome/17.0.942.0 响应标题 Allow:POST,GET,OPTIONS,HEAD Content-Length:0 Date:Wed, 30 Nov 2011 02:13:21 GMT Server:Jetty(7.5.4.v20111024)

如何将Access-Control-Allow-Origin添加到jetty服务器

我有一个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; } 谢谢。

使用Jetty嵌入式容器时,ServletContextHandler.setResourceBase和ResourceHandler.setResourceBase有什么区别?

我正在使用嵌入式Jetty来创建一个静态网站。 ServletContextHandler.setResourceBase(“…”)与ResourceHandler.setResourceBase(“…”)具有相同的效果吗? 例: // ServletContextHandler case ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); context.setResourceBase(“/tmp/…”); // ResourceHandler case ResourceHandler resourceHandler = new ResourceHandler(); resourceHandler.setResourceBase(“/tmp/…”); 我试过测试它们。 ResourceHandler正是我想要的。 但否则不会。 它们之间有什么区别? (抱歉我的英语不好:P) 更新 更改后,下面是整个代码。 Context(“/”)提供静态文件,wsContext(“/ ws”)提供Web套接字端点。 当然,Context(“/”)也能够为Web套接字端点提供服务。 server = new Server(); server.setStopAtShutdown(true); ServerConnector connector = new ServerConnector(server); connector.setPort(8000); server.addConnector(connector); // Setup the basic application “context” for this application at “/” // […]