我打算使用Java的标准i18n系统和复数形式的ChoiceFormat类,但后来意识到它不能处理某些语言的复杂多元规则(例如波兰语).如果它只处理类似英语的语言,那么它似乎有点无意义.
有什么选择来实现正确的复数形式?使用它们的利弊是什么?
我在Jetty 6前面使用反向代理(Apache).用户使用SSL连接到Apache,Apache通过普通HTTP将一些请求转发给Jetty.我希望Jetty使用安全会话cookie.
人们会认为这将是安装Jetty后人们做的第一件事 - 但我很难让它上班.
我设置Jetty使用安全cookie,如另一个stackoverflow问题中所述.但是,Jetty拒绝使用安全cookie - 我认为这是因为反向代理的连接不是SSL.
我试图说服Jetty它正在根据sonatype.com上的描述处理来自SSL的请求.也就是说,我在Apache中添加了以下内容:
RequestHeader set X-Forwarded-Scheme "https"
Run Code Online (Sandbox Code Playgroud)
在/etc/jetty/jetty.xml中:
<Set name="handler">
<New id="Handlers" class="org.mortbay.jetty.handler.rewrite.RewriteHandler">
<Set name="rules">
<Array type="org.mortbay.jetty.handler.rewrite.Rule">
<Item>
<New id="forwardedHttps"
class="org.mortbay.jetty.handler.rewrite.ForwardedSchemeHeaderRule">
<Set name="header">X-Forwarded-Scheme</Set>
<Set name="headerValue">https</Set>
<Set name="scheme">https</Set>
</New>
</Item>
</Array>
</Set>
<Set name="handler">
<New id="Handlers" class="org.mortbay.jetty.handler.HandlerCollection">
<Set name="handlers">
<Array type="org.mortbay.jetty.Handler">
<Item>
<New id="Contexts" class="org.mortbay.jetty.handler.ContextHandlerCollection"/>
</Item>
<Item>
<New id="DefaultHandler" class="org.mortbay.jetty.handler.DefaultHandler"/>
</Item>
<Item>
<New id="RequestLog" class="org.mortbay.jetty.handler.RequestLogHandler"/>
</Item>
</Array>
</Set>
</New>
</Set>
</New>
</Set>
Run Code Online (Sandbox Code Playgroud)
仍然没有安全的cookie.有什么建议?
如果我使用它来托管战争文件,如何将标志 SameSite=Lax 或 SameSite=Strict 添加到由 Jetty 生成的会话 cookie?
我正在使用 Apache httpcomponents 实现彗星式(延迟响应)http 服务器。我的代码与http://hc.apache.org/httpcomponents-core-ga/examples.html上的“基本非阻塞 HTTP 服务器”示例非常相似
我使用 DefaultServerIOEventDispatch 和 DefaultListeningIOReactor 来调度请求,就像在示例代码中一样。在我的 NHttpRequestHandler 中,我想记录每个请求的 IP 地址。
在 HttpRequestHandler 中,您可以访问 HttpRequest、HttpResponse 和 HttpContext。使用 NHttpRequestHandler,您还有一个 NHttpResponseTrigger。如何获取请求来自的远程 IP 地址?我看不出如何使用可用的对象来做到这一点。
更新,这是我最终使用的 Scala 代码:
def getIp(context: HttpContext): Option[String] = {
val conn = context.getAttribute(ExecutionContext.HTTP_CONNECTION)
conn match {
case inet: HttpInetConnection =>
inet.getRemoteAddress match {
case sock: java.net.InetSocketAddress => // HttpComponents 4.1
Some(sock.getAddress.getHostAddress)
case adr: java.net.InetAddress => // HttpComponents 4.2
Some(adr.getHostAddress)
case unknown =>
Some(unknown.toString)
}
case _ => None
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,HttpComponents …
使用Apache HttpClient 4.3如何在不使用已弃用的HttpParams的情况下关闭Nagle的算法(TCP_NODELAY)并打开TCP保持活动数据包(SO_KEEPALIVE)?
注意:TCP keep-alive和HTTP keep-alive是两回事.