Tag: docker

GAE项目类路径上的Xerces JAR导致“找不到SAXParserFactoryImpl”

我正在使用Google App Engine的Eclipse插件,我遇到了一个Xerces依赖的奇怪问题。 我的类取决于我添加到项目的类路径中的Apache Xerces JAR。 但是,这会在启动Jetty应用服务器时触发错误: WARNING: failed com.google.apphosting.utils.jetty.DevAppEngineWebAppContext@6efde050 {/,/Users/lenni/dev/gate/war} javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found 当我从类路径中删除xercesImpl.jar时,jetty启动正常,但是我的类不再编译,因为缺少依赖项。 这听起来很像这个问题 ,但是我尝试转换到JRE 1.6并且仍然没有快乐。

一旦队列填满,WebSocket异步发送可能导致阻止发送

我有非常简单的基于Jetty的websockets服务器,负责流式传输小二进制消息以连接客户端。 为避免在服务器端出现任何阻塞,我使用的是sendBytesByFuture方法。 在将负载从2个客户端增加到20个后,它们将停止接收任何数据。 在故障排除期间,我决定打开同步发送方法,最后得到了可能的原因: java.lang.IllegalStateException: Blocking message pending 10000 for BLOCKING at org.eclipse.jetty.websocket.common.WebSocketRemoteEndpoint.lockMsg(WebSocketRemoteEndpoint.java:130) at org.eclipse.jetty.websocket.common.WebSocketRemoteEndpoint.sendBytes(WebSocketRemoteEndpoint.java:244) 客户端在接收数据时不进行任何计算,因此可能无法成为缓慢的加入者。 所以我想知道我该怎么做才能解决这个问题? (使用Jetty 9.2.3)

在Jetty中运行的Web应用程序中使用CAC(通用访问卡)对用户进行身份validation,以获取美国政府机构使用的应用程序

我最近的任务是完成这个问题所描述的类似任务。 我的任务是使Web应用程序通过CAC卡validation凭据。 我的Web应用程序在OSGi容器中运行的嵌入式Jetty服务器上运行。 虽然问题的答案是有良好的信息,但我注意到其中一个答案提出了一个很好的问题。 回答的用户是@erikson并在评论他自己的答案时说:“你使用的是美国国防部发行的CAC吗?这个申请是针对政府机构的吗?如果要申请,还有很多额外的规则需要遵守所以。” 就我而言,他提出的问题的答案是“是的,我的申请是使用美国国防部发行的CAC卡。” 他的评论从未在原始问题上得到回复,所以我在这里发布这个问题。 我的问题是,在哪里可以找到关于美国国防部和政府机构对@erikson提到的申请的额外要求的简明信息?

jersey 2 + spring 4 + jetty-maven-plugin

我试图用一个使用jersey 2 + spring 4 + jetty-maven-plugin的例子。 但不断得到这个错误,无法理解为什么..请给我一个手。 WARNING: The Jersey servlet application, named com.joejag.code.orders.restservices.ResourceConfiguration, is not annotated with ApplicationPath and has no servlet mapping. 2015-12-16 19:56:38.746:INFO:/.0-SNAPSHOT:main: Spring WebApplicationInitializers detected on classpath: [org.glassfish.jersey.server.spring.SpringWebApplicationInitializer@2776015d] 2015-12-16 19:56:38.778:WARN:oejw.WebAppContext:main: Failed startup of context oejmpJettyWebAppContext@15fb7a32{/orders-server-1.0-SNAPSHOT,file:///home/bryan-1/workspace/project/java/simple-java-restful-service-using-jersey-and-maven-master/src/main/webapp/,STARTING}{file:///home/bryan-1/workspace/project/java/simple-java-restful-service-using-jersey-and-maven-master/src/main/webapp/} java.lang.IllegalStateException: No such servlet: Example 我的POM.xml 4.0.0 com.joejag.code.orders orders-server war 1.0-SNAPSHOT Example UTF-8 4.2.3.RELEASE 2.22.1 […]

发生exception时如何正常关闭端点?

我写了一个小的JAX-WS Web服务,我在一个容器外面运行Endpoint.publish() : Endpoint endpoint = Endpoint.create(new MyServiceImpl()); endpoint.publish(“http://localhost:4425/myService”); 如果我的任何Web服务方法抛出exception,则端点不会正常关闭,并且该地址将保持使用状态,直到Windows最终释放它。 这会导致经典错误: com.sun.xml.internal.ws.server.ServerRtException:服务器运行时错误:java.net.BindException:已在使用的地址:bind 我可以使用try / catch包装所有的Web服务方法,但这似乎有点重复。 我还尝试通过Thread.setDefaultUncaughtExceptionHandler()安装一个清理类,但是当我的Web服务方法引发exception时,没有触发此类。 有没有更优雅的解决方法,而不是诉诸无数的try / catch块? 根据Waldheinz的回答,我试图使用Jetty类来支持JDK默认值。 代码编译,但执行后,它会在publish后立即终止。 使用JDK类时,主线程将保持活动状态,直到我手动终止该进程。 有什么想法会有什么不妥? 我想知道是否有exception发生在某处,但被吞没,所以我看不到它。 Endpoint endpoint = Endpoint.create(new MyServiceImpl()); Server s = new Server(new InetSocketAddress(HOST, PORT)); ServerConnector connector = new ServerConnector(s); connector.setReuseAddress(true); s.setConnectors(new Connector[] { connector }); s.setHandler(new ContextHandlerCollection()); JettyHttpServer server = new JettyHttpServer(s, false); […]

VisualVM打破了docker

我正在尝试分析由“mvn jetty:run”运行的应用程序,当我将VisualVM连接到它并单击Profile jetty崩溃时: Profiler Agent: Waiting for connection on port 5140 (Protocol version: 8) Profiler Agent: Established local connection with the tool # # A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6da5e5d4, pid=5124, tid=5704 # # JRE version: 6.0_16-b01 # Java VM: Java HotSpot(TM) Client VM […]

升级到Jetty 9.3后的标头解析错误

当我将docker发行版从9.2更改为9.3时,我遇到了问题。 在9.2下我的应用程序完美无缺,但是当运行相同的war文件并从同一客户端连接时,我在9.3下运行时收到以下错误消息: 015-08-30 14:55:32.174:WARN:oejh.HttpParser:qtp1100439041-12: Illegal character 0x20 in state=HEADER_IN_NAME for buffer HeapByteBuffer@26dab36[p=62,l=654,c=8192,r=592]={POST /api/v1/time…0.1:8080\r\nKey <<>>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00…\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00} 2015-08-30 14:55:32.175:WARN:oejh.HttpParser:qtp1100439041-12: bad HTTP parsed: 400 Illegal character 0x20 for HttpChannelOverHttp@6765bf81{r=0,c=false,a=IDLE,uri=-} 根据我的理解,标题中有一个非法字符,但为什么一个版本抛出此错误而另一个版本没有? 我也使用Apache httpclient 4.4.1发送数据。

如何优雅地关闭嵌入式docker

我有一个应用程序在嵌入式jetty服务器上运行。 现在我想启动/停止服务器作为服务。 我使用脚本启动服务器。 java $JAVA_OPTS -DREQ_JAVA_VERSION=$JAVA_VERSION -jar myjetty.jar 主类 Server server = new Server(); SelectChannelConnector connector = new SelectChannelConnector(); connector.setPort(PORT); server.addConnector(connector); HandlerCollection handlers = new HandlerCollection(); NCSARequestLog requestLog = new NCSARequestLog(); requestLog.setFilename(home + “/logs/access_” + logFileDateFormat + “.log”); requestLog.setFilenameDateFormat(logFileDateFormat); requestLog.setRetainDays(10); requestLog.setAppend(true); requestLog.setExtended(false); requestLog.setLogCookies(false); requestLog.setLogTimeZone(TimeZone.getDefault().getID()); RequestLogHandler requestLogHandler = new RequestLogHandler(); requestLogHandler.setRequestLog(requestLog); handlers.addHandler(requestLogHandler); server.setHandler(handlers); server.start(); server.join(); 这启动了服务器。 […]

在web.xml文件中映射WebSocketEndpoints

我正在尝试开发一个使用websocket端点并将其部署在Jetty服务器上的Java EE 7 Web应用程序。 该应用程序具有以下结构: Game/ src/ main/ java/ game/ WebSocketEndpoint.java webapp/ index.html scripts/ variousjavascriptstuff.js WEB-INF/ beans.xml web.xml 在beans.xml文件中: WebSocketEndpoint已正确注释,并且可以与Netbeans / Glassfish4一起使用,但是,应用程序必须部署在Jetty服务器上。 所以,我的问题 – 如何将websocket端点映射到web.xml文件中的URL /游戏? 我已经找到了一些映射servlet的例子,但我认为这不适用于服务器端点。 或者,有没有办法为Jetty编写web.xml文件,以便它自动发现ll带注释的类/方法(类似于上面的beans.xml)

在jetty项目中存储静态文件如html / css / javascript的位置?

我有一个使用jetty运行的maven项目: $ mvn run:jetty 在我的项目中,我应该存储HTML,CSS,Javascript,图像等静态文件? 我的布局使用简单的Web应用程序拱门类型: /src/main/java/webapp/web-inf/views/ 我应该创建一个名为’assets’的文件夹吗? 然后我的视图页面将以某种方式引用/assets文件夹? 我很困惑我将在我的html页面中使用哪条路径来引用如下图像: /assets/images/logo.png