Articles of Java的

如何使用Docker api附加到容器后使用stdin,stdout和stderrstream?

我试图附加到一个容器使用API​​给https://docs.docker.com/engine/reference/api/docker_remote_api_v1.22/ 我有一个基于docker-hub nginx图像的容器执行。 我可以发送一个附加到它的请求,保存stderr,stdin和stdout的标志。 我的目标是交互使用它们。 我无法弄清楚如何使用java的stream,发送命令和读取输出的过程。 我正在使用Docker版本1.10.1。 Api v1.22。 正在使用的操作系统是Ubuntu 14.04。 该应用程序使用JDK 1.8。 我将重点放在通过api调用使用attach命令,如http:// localhost:4243 / containers / container_id / attach?stdin = 1&stdout = 1 (4243是Docker侦听命令的地方),stdin和stdout标志用于启用stream。 该文档具有标志细节。 打完电话后,我想和我的容器“互动”。 这可能根据API文件,但我有点不清楚如何做到这一点。 帮助将不胜感激!

反向代理HTTP / 2从h2到h2c

我们有一个能够通过h2c(HTTP / 2明文)提供内容的java web服务器, 我们想在h2c中将使用h2(即标准的HTTP / 2 over SSL)build立的代理连接反向到java服务器。 在nginx上启用HTTP / 2非常简单,处理传入的h2连接工作正常。 我们如何告诉nginx使用h2c而不是http / 1.1代理连接? 注意:非nginx解决scheme可能是可以接受的 server { listen 443 ssl http2 default_server; server_name localhost; ssl_certificate /opt/nginx/certificates/???.pem; ssl_certificate_key /opt/nginx/certificates/???.pk8.key.pem; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { proxy_pass http://localhost:8080/; ## <—- h2c here rather than http/1.1 } } 结论 (2016年6月) 这可以用haproxy使用一个简单的configuration文件来完成。 查询(HttpServletRequest) […]

Spring,SockJS – WebSocket握手期间出错:意外的响应代码400

我已经使用Spring Boot实现了BE应用程序和WebSockets支持。 我使用SockJS为了连接到我的WebSocket端点,并在连接过程中出现以下错误: error during WebSocket handshake: Unexpected response code: 400 但是(就像你在上面的图片中看到的那样)一切正常,websocket打开了。 现在我不明白什么是这个问题的原因,以及如何解决这个问题。 请帮忙。 更新 感谢paweln1986帮助我有固定版本问题与SockJS lib但意外的响应代码400的问题仍然存在: 我也在Tomcat 8之前使用nginx。这是我的nginxconfiguration: server { listen 443 ssl; server_name myserver.com; ssl on; location /api/ { proxy_pass_header X-XSRF-TOKEN; proxy_pass http://localhost:8081/api/; proxy_set_header Origin "http://localhost:8081/api/"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; } location /dashboard/ { proxy_pass http://localhost:8081/dashboard/; […]

连接到webservice导致com.sun.xml.internal.ws.client.ClientTransportException:服务器发送HTTP状态码200:OK

我使用sun-jaxws制作了wsdl。 我在Netbeanse中创build了Web服务客户端,并成功地调用了wsdl Web服务。 然后我configuration我的nginx服务器通过https访问Web服务。 当我通过https调用服务时,我得到错误com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 200: OK 我的wsdl地址为https://somesite.com/mywsdl/?wsdl 。 在wsdl里面我看到这样的服务位置: <service name="GenericService"> <port name="GenericServicePort" binding="tns:GenericServicePortBinding"> <soap:address location="https://somesite.com:443/mywsdl"/> </port> </service> 我不知道是否在我的nginxconfiguration,或在我的jaxws的问题。

Spring Security无法使用Nginx Server创buildJSESSION id

我已经在spring mvc应用程序中实现了spring安全性并且对我来说工作正常但是我尝试使用Nginx服务器configuration来访问这个应用程序现在Spring Security停止工作最后,我发现Spring安全性无法创buildJSESSIONID cookie Nginx服务器。 任何人都可以帮我吗?

什么时候servlet释放它的线程?

假设没有保留,当一个servlet容器作为一个独立的服务器时,我认为servlet的线程不会被释放,直到整个响应被发送到客户端(比如web浏览器)。 这是一个正确的假设吗? 但是,如果servlet支持像Nginx这样的反向代理,会发生什么? 一旦将响应传递给Nginx,线程是否被释放,或者直到响应被发送到它的最终客户端(比如浏览器)? 更新:让我试试这个更清楚一点。 对于从servlet发送到像nginx这样的代理的响应,仅需要几毫秒(比如2ms)。 但是,它可能需要额外的80ms(或者这样)才能从nginx发送给浏览器。 一旦响应发送给nginx,servlet是否释放线程/stream,或者servlet是否保留它们直到响应被发送到浏览器(即整个80ms)

用java的nginx进行端口转发

我正在试图做一个使用redis作为后端的Java应用程序 。 由于Redis是一个非常快速的键值存储,所以我希望使用这个存储,但redis被用于1个客户端,所以它没有用户选项:通过身份validation。 我想find一种方法来实现某种身份validation,所以我尝试了nginx的redis2扩展。 我这样做是因为我可以使用客户端的证书和HTTPS。 但是这使得我的应用程序非常慢。 我正在考虑使用某种通过nginx代理连接到redis的隧道。 对于这个redis会在本地主机上监听,并且会有一个地址我想用来访问redis,但是使用httpsauthentication。 所以基本上我现在的方法 JAVA – Jedis – LAN – REDIS ,would be JAVA – Jedis(with localhost as the tunnel entrance?)- -SSL LAN – Nginx(tunnel exit) – Redis 任何提示实现这一点? 我一直在网上search最后的日子,但我不能提出任何事情,只增加了一点本地连接的开销。

运行nginx加jar的Docker

我试图运行一个Docker容器,它包含一个Java jar服务器和nginx在它前面执行subdomain->端口转发,我似乎没有正确地设置它。 这是我的Dockerfile: FROM java:8 MAINTAINER somefool RUN apt-get update RUN apt-get -y install nginx COPY theBigOwlServer.jar /data/server.jar RUN rm -v /etc/nginx/nginx.conf ADD nginx.conf /etc/nginx/ RUN echo "daemon off;" >> /etc/nginx/nginx.conf EXPOSE 80 8080 CMD java -jar /data/server.jar CMD service nginx start #<— line AAA Java jar监听端口8080和8090.当我用-p 80:80 -p 8080:8080运行这个容器时,jar似乎并没有启动。 我没有看到它的任何控制台输出,并且我无法从curl localhost:8080.的容器外部到达它curl localhost:8080. 我可以到达端口80上的nginx,但是应该转发到jar的请求将返回一个空的答复。 但是,如果我注释掉AAA行,那么jar就会正常启动。 […]

如何在Windows 7环境下使用NginxconfigurationJboss AS 7

任何一个指向一步一步的指南,以nginxconfigurationn jboss AS7企业应用程序。 假设我有webserverpath:C:\ jboss-as-7.1.1.Final \ deploy @ C:\ jboss-as-7.1.1.Final \ standalone \ deployments \ HelloWorld.deployed AppContext url: http://localhost:9090/HelloWorld 我希望所有的请求都来到nginx:80来指向 http://localhost:9090/HelloWorld 注意: 我踊跃https://serverfault.com/questions/293348/configure-nginx-for-jboss-tomcat其中只显示一个通用的信息。 任何人都可以指向在Jboss AS7中以独立模式部署的jboss ear应用程序的实际configuration(应用程序未部署为分解版本)。

将子域从AWS ELB传递到应用服务器

我们有一个Java应用程序提供多种产品。 这是基于产品的行为变化。 该产品由url的子域名定义: https://<product1>.example.com https://<product2>.example.com … 这些url中的每一个都通过Route 53映射到不同的AWS Elastic Load Balancer,后者将请求转发给我们的同类EC2 App Server。 所以https://<product1>.example.com有一个ELB, https://<product2>.example.com有一个不同的ELB。 但是,这两个ELBS都将stream量引导到具有相同Java应用程序的同一组服务器。 ELB的转发请求通过端口9443和9001,基于它们是否为https,nginx为端口9001上的所有stream量redirect,否则通过端口8080转发到Java应用。 我需要能够确定原始url在到达Java应用程序之前是什么,因此可以用它来确定响应的configuration和行为。 我提出的最好的是$http_referer ,但只适用于初次访问后的任何请求,我们还需要第一次访问的url。 下面是我们部署的(非常)粗略的图,我希望它有帮助。