我已经从 WSDL 源生成了一堆 java 文件。我使用 Apache CXF 2.6.1 来生成文件。
\n\n当我将代码放入运行 jetty 和 maven 的生产环境中,并通过生成的 java 文件向服务器发送请求时,它会以某种方式更改系统/JVM 字符编码。瑞典语字符 \xc3\xa5、\xc3\xa4 和 \xc3\xb6 更改为 \xc3\x83\xc2\xa5、\xc3\x83\xc2\xa4、\xc3\x83\xc2\xb6。
\n\n我无法在我自己的盒子上重现这个。
\n\n有人有什么想法吗?
\n在没有指定上下文和上下文处理程序的情况下启动一个码头实例,然后在服务器启动后继续向它添加上下文是否正确。虽然我能够使用可变的 HandlerCollection 来做到这一点,并且日志显示服务器和上下文已启动并且可用,但我无法使用 URL 访问它。或者我们应该在启动时向服务器添加至少一个根上下文和上下文处理程序?
我做了类似于以下链接中建议的示例的操作。 Jetty 9(嵌入式):在运行时添加处理程序
我的码头版本是 9.3.7.v20160115
我正在尝试配置 Jetty 9 服务器来提供 Gzip 压缩数据。不幸的是,我找不到任何适合我的用例的描述。我想我必须使用新的 GzipHandler 而不是 GzipFilter (从 Jetty 9.3 开始,GzipFilter 只是一个虚拟的)。
我的设置是一个 WAR 文件,部署在 Jetty 9 安装上或由 maven-jetty-plugin 运行。所以这不是嵌入式 Jetty。目前我只有一个jetty-env.xmlin /src/main/resources/META-INF/resources/WEB-INF. 没有其他 Jetty 相关的配置文件。我希望有一个不需要对 Jetty 安装进行任何更改的设置。因此,应该可以通过 WAR 文件中的附加配置来启用压缩。我还喜欢压缩静态(来自/src/main/resources/Webjar 的文件)和动态(由 Jersey 生成)内容。
我希望有人已经完成了这样的设置并可以给我一些提示。
问候,约翰内斯
按照此问题中接受的答案,我使用该命令生成了一个密钥库keytool -keystore keystore.jks -genkey -alias server,并将其提交给resources项目文件夹中的源代码管理。然后,我将服务器设置为使用该密钥库。
(ns foo.server
(:require [foo.handler :refer [app]]
[config.core :refer [env]]
[ring.adapter.jetty :refer [run-jetty]])
(:gen-class))
(defn -main [& args]
(let [port (Integer/parseInt (or (env :port) "3000"))]
(run-jetty app {:port 8443
:join? false
:ssl? true
:keystore "./resources/keystore.jks"
:key-password "foo"})))
Run Code Online (Sandbox Code Playgroud)
但是,此配置不起作用,如以下日志所示。但为什么?
$ heroku logs --app foo-test
2017-02-02T23:11:42.161056+00:00 heroku[web.1]: Process exited with status 1
2017-02-02T23:11:42.295501+00:00 heroku[web.1]: State changed from starting to crashed
2017-02-02T23:11:43.413805+00:00 app[web.1]: 2017-02-02 23:11:43.412:INFO::main: Logging initialized @10893ms
2017-02-02T23:11:43.520845+00:00 app[web.1]: 2017-02-02 …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我正在处理的嵌入式 Jetty 应用程序中测试 WebSocket 支持。我的目标是将数据从服务器流式传输到浏览器。我还没有解决所有问题,因为我刚刚开始设置 WebSocket servlet/处理程序。
我看到的问题是 Chrome 无法连接到 WebSocket 处理程序:
WebSocket 连接到“ws://127.0.0.1:8081/stream”失败:WebSocket 握手期间出错:意外响应代码:404(匿名)@ ws-test.js:1
HTTP 404 来自 Jetty,因为它没有向“/stream”注册任何内容。
在我的一生中,我无法弄清楚如何使用指定的 URL 设置 WebSocketServlet 或 WebSocketHandler。我已经阅读了我能找到的所有示例和教程,但其中很多不是嵌入式 Jetty,或者是旧的。在任何一种情况下,我都愿意犯错。
我将从一些代码开始。这是我的服务器上下文和处理程序的主要 Jetty 设置:
ResourceHandler resource_handler = new ResourceHandler();
resource_handler.setWelcomeFiles(new String[] { "index.htm" });
resource_handler.setResourceBase('./www');
ServletHandler servletHandler = new ServletHandler();
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] { resource_handler, servletHandler, new DefaultHandler() });
server.setHandler(handlers);
// Add the /test servlet mapping
servletHandler.addServletWithMapping(TestServlet.class, "/test/*");
// Add websocket handler
handlers.addHandler(StreamingHandler.getServlet("/stream"));
server.start();
Run Code Online (Sandbox Code Playgroud)
这是我的 StreamingHandler 类,它扩展了 WebSocketHandler。请注意,我正在尝试设置 WebSocketHandler 的上下文路径。关键是让 …
我正在尝试以编程方式设置用户名/密码组合:
HashLoginService loginService = new HashLoginService();
loginService.setName("myrealm");
Credential credential = new Password("password");
AbstractLoginService.UserPrincipal principal =
new AbstractLoginService.UserPrincipal("username",credential);
Subject subject = new Subject();
subject.getPrincipals().add(principal);
subject.getPrivateCredentials().add(credential);
loginService.getIdentityService().newUserIdentity(
subject,
principal,
new String[]{"users"});
Run Code Online (Sandbox Code Playgroud)
但我得到了 401。我在这里错过了什么?以前可以做简单的事
loginService.putUser("username",
new Password("password"),
new String[]{"users"});
Run Code Online (Sandbox Code Playgroud)
但不适用于 jetty 9。
希望得到一些指导。谢谢你!
有没有人成功使用 Letsencrypt SSL 和默认码头安装?我似乎无法正确理解。
更多信息:
OS: Ubuntu 16.04
Jetty Path: /opt/jetty
Run Code Online (Sandbox Code Playgroud)
唯一调整的是在 start.ini 中的端口 80 上启用 http。
我遇到的问题:
当我将 --module-ssl 输入到 start ini 时,出现错误
ServerConnector@48aca48b{null,[]}{0.0.0.0:8443}` 没有默认协议
启动码头并失败。
我尝试将 SSL 信息输入到 ini 中,并使用该信息编辑 .xml 文件。
I am using jetty to implement websocket client. This is producing a lot of noise in log file in start up of application and when failed reconnect websocket. Actually in case of websocket connection failure i am retrying after a minute so after every minute it it producing this kind of log:
2017-06-12 14:23:04 | DEBUG | [main] o.e.j.u.log:173 - Logging to Logger[org.eclipse.jetty.util.log] via org.eclipse.jetty.util.log.Slf4jLog
2017-06-12 14:23:04 | INFO | [main] c.h.h.v.c.WebSocketListener:53 - STARTING WS Client
2017-06-12 14:23:04 | DEBUG …Run Code Online (Sandbox Code Playgroud) 我尝试使用 gretty 运行项目。它抛出异常:
10:47:39 WARN Failed startup of context o.a.g.JettyWebAppContext@52045dbe{/,file:/C:/IdeaProjects/example-tab/build/inplaceWebapp/,STARTING}
java.lang.RuntimeException: Error scanning entry module-info.class from jar file:/C:/Users/user1/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.10.0/fec5797a55b786184a537abd39c3fa1449d752d6/log4j-api-2.10.0.jar
at org.eclipse.jetty.annotations.AnnotationParser.parseJar(AnnotationParser.java:913) ~[jetty-annotations-9.2.24.v20180105.jar:9.2.24.v20180105]
at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:831) ~[jetty-annotations-9.2.24.v20180105.jar:9.2.24.v20180105]
at org.eclipse.jetty.annotations.AnnotationConfiguration$ParserTask.call(AnnotationConfiguration.java:164) ~[jetty-annotations-9.2.24.v20180105.jar:9.2.24.v20180105]
at org.eclipse.jetty.annotations.AnnotationConfiguration$1.run(AnnotationConfiguration.java:549) ~[jetty-annotations-9.2.24.v20180105.jar:9.2.24.v20180105]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) ~[jetty-util-9.2.24.v20180105.jar:9.2.24.v20180105]
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) ~[jetty-util-9.2.24.v20180105.jar:9.2.24.v20180105]
at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_171]
Caused by: java.lang.UnsupportedOperationException: null
at org.objectweb.asm.ClassVisitor.visitModule(ClassVisitor.java:129) ~[asm-6.1.1.jar:na]
at org.objectweb.asm.ClassReader.readModule(ClassReader.java:667) ~[asm-6.1.1.jar:na]
at org.objectweb.asm.ClassReader.accept(ClassReader.java:503) ~[asm-6.1.1.jar:na]
at org.objectweb.asm.ClassReader.accept(ClassReader.java:355) ~[asm-6.1.1.jar:na]
at org.eclipse.jetty.annotations.AnnotationParser.scanClass(AnnotationParser.java:974) ~[jetty-annotations-9.2.24.v20180105.jar:9.2.24.v20180105]
at org.eclipse.jetty.annotations.AnnotationParser.parseJarEntry(AnnotationParser.java:956) ~[jetty-annotations-9.2.24.v20180105.jar:9.2.24.v20180105]
at org.eclipse.jetty.annotations.AnnotationParser.parseJar(AnnotationParser.java:909) ~[jetty-annotations-9.2.24.v20180105.jar:9.2.24.v20180105]
... 6 common frames omitted
Run Code Online (Sandbox Code Playgroud)
等级:
plugins {
id 'java'
id 'war'
id "org.gretty" version "2.2.0" …Run Code Online (Sandbox Code Playgroud) 我们正在运行 DropWizard 并尝试删除导致抛出 404 响应的 URL 的日志记录
我们有一个包罗万象的异常映射器,它接收一个NotFoundException. 令人沮丧的是,该异常没有携带导致它被抛出的 URL 的上下文。
示例应用在这里:https : //github.com/pauldambra/not.found.example
我们正在使用一个 ExceptionMapper
public class NotFoundLogger implements ExceptionMapper<NotFoundException> {
ExampleLogger logger = new ExampleLogger();
@Override
public Response toResponse(final NotFoundException exception) {
logger.error(urlFrom(exception), exception);
return Response.status(404).build();
}
private String urlFrom(final NotFoundException exception) {
return "why is this not a property on the exception?!";
}
private class ExampleLogger {
void error(final String notFoundUrl, final NotFoundException exception) {
System.out.println("someone tried to load " + notFoundUrl);
System.out.println(exception.getMessage());
} …Run Code Online (Sandbox Code Playgroud)