如何使Java 6与“SSL对等关闭不正确”的SSL连接失败,成功与Java 7一样?

我看到运行Java 6的客户端的SSL连接失败,例外情况如下: Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:882) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1188) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1215) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1199) at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:434) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:166) at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:133) … 35 more Caused by: java.io.EOFException: SSL peer shut down incorrectly at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:462) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:863) … 41 more 该服务器是一个基于Tomcat 7的应用程序,在Java 7,Linux和Amazon EC2上运行,这是值得的。 我已经找到了很多关于可能的casues的建议,包括偶然连接到非SSL端口等等。我相信我已经把它全部排除了,主要是因为完全相同的客户端在运行Java 7时没有任何变化 。 (两种情况下都是OS X.) 下面我将介绍Java 6的调试输出和Java 7的SSL连接过程。 […]

使用类似种子时,为什么初始随机数相似?

我发现了使用Java的Random类生成随机数的奇怪之处。 基本上,如果使用近似种子(例如1到1000之间)创建多个Random对象,则每个生成器生成的第一个值几乎相同,但下一个值看起来很好(我没有进一步搜索)。 以下是两个第一个生成的双打,种子从0到9: 0 0.730967787376657 0.24053641567148587 1 0.7308781907032909 0.41008081149220166 2 0.7311469360199058 0.9014476240300544 3 0.731057369148862 0.07099203475193139 4 0.7306094602878371 0.9187140138555101 5 0.730519863614471 0.08825840967622589 6 0.7307886238322471 0.5796252073129174 7 0.7306990420600421 0.7491696031336331 8 0.7302511331990172 0.5968915822372118 9 0.7301615514268123 0.7664359929590888 从991到1000: 991 0.7142160704801332 0.9453385235522973 992 0.7109015598097105 0.21848118381994108 993 0.7108119780375055 0.38802559454181795 994 0.7110807233541204 0.8793923921785096 995 0.7109911564830766 0.048936787999225295 996 0.7105432327208906 0.896658767102804 997 0.7104536509486856 0.0662031629235198 […]

java.lang.NoClassDefFoundError:org / json / JSONObject

我正在使用Eclipse IDE并正在编写servlet。 servlet应接受来自html文件的值并相应地返回JSON响应。 我的doPost()是: protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { try { res.setContentType(“application/json”); res.setHeader(“Cache-Control”, “nocache”); res.setCharacterEncoding(“utf-8”); PrintWriter out = res.getWriter(); JSONObject json = new JSONObject(); String un=req.getParameter(“uname”); String pw=req.getParameter(“password”); if(un.equals(“xxx”) && pw.equals(“xxx”)) json.put(“result”, “success”); else json.put(“result”, “fail”); out.print(json.toString()); } catch(Exception e){System.out.print( e.getMessage());} } 当我在Eclipse中运行这个servlet时,我得到一个文件下载对话框。 当使用Tomcat在Eclipse外部运行时,我收到错误: root cause java.lang.NoClassDefFoundError: org/json/JSONObject Server1.doPost(Server1.java:25) javax.servlet.http.HttpServlet.service(HttpServlet.java:647) […]

鼓励JVM加入GC而不是增加堆?

(注意,当我说“JVM”时,我的意思是“Hotspot”,我正在运行最新的Java 1.6更新。) 示例情况: 我的JVM在-Xmx设置为1gb的情况下运行。 目前,堆已经分配了500mb,其中使用了450mb。 该程序需要在堆上加载另外200 MB。 目前,堆中有300mb的“可收集”垃圾(我们假设它们都是最老的一代)。 在正常操作下,JVM会将堆增长到700 MB左右,并在它到达时进行垃圾收集。 在这种情况下我想要的是JVM首先gc,然后分配新的东西,这样我们最终得到的堆大小保持在500mb,而使用的堆在350mb。 是否有JVM参数组合可以做到这一点?

JAX-WS与JAX-RPC

我写了2个webservices,一个使用Jax-WS,另一个使用Jax-RPC。 他们只返回一个字符串。 我用jMeter对它进行了压力测试,奇怪的是,因此Jax-RPC的速度要快一些。 在性能方面(响应时间,CPU时间,堆),我什么时候才真正从Jax-WS中获利? 我该如何certificate呢? 谢谢你的时间! =)

使用Java,如何让Word打开和编辑文件?

可能重复: 在java中打开excel文档 我的Java应用程序中有一个按钮,当单击它时,应该导致Word打开一个特定的文件。 此文件位于文件系统中的某个位置,就像在用户的文档目录中一样。 我怎样才能在Java中实现这样的东西?

在Java中安全存储密码的最佳实践是什么?

在Java桌面应用程序中存储密码的推荐方法是什么? 我希望用户能够只进入一次credencials而不会再次提示。 在个人项目中,我一直在使用Preferences API,但我认为这与以纯文本(安全性)存储它没有什么不同。 非常感谢 编辑: 非常感谢您的建议。 似乎有些混乱,毫无疑问因为我可能没有把问题弄得很清楚…… 我会给出一个假设的场景: 假设我正在为远程数据库创建一个简单的前端,该数据库使用用户名/密码创建连接字符串。 通常,每次应用程序启动时都会提示用户输入用户名/密码组合。 将密码存储在用户机器中的最佳方法是什么,无需重新输入(在应用程序启动时自动连接)。 一种“记住我”的function(我知道这本身并不是一个很好的做法…) EDIT2: 谢谢大家的回答。 PaŭloEbermann对手头的问题非常有用,Chris Smith的链接很有意思,但我接受了JVerstry的一个,因为密钥库可能是我正在采取的路线。

使用减号格式化负数美元,而不是括号(Java)

如何使用减号打印NumberFormat.getCurrencyInstance()以打印负的美元货币值?

获取Java中时区的夏令时转换日期

我想知道在Java中最简单的方法是获取将来夏令时更改的日期列表。 这样做的一个相当不公平的方法是简单地迭代一堆多年的日子,对TimeZone.inDaylightTime()进行测试。 这会有效,而且我并不担心效率,因为这只需要在每次我的应用程序启动时运行,但我想知道是否有更简单的方法。 如果你想知道为什么我这样做,那是因为我有一个需要处理包含UTC时间戳的第三方数据的javascript应用程序。 我想要一种可靠的方法在客户端从GMT转换到EST。 请参阅Javascript – Unix时间到特定时区我写了一些javascript,它会做,但我想从服务器获得精确的过渡日期。

从Vectorinheritance的Java类Stack的负面影响是什么?

通过扩展类Vector,Java的设计者能够快速创建类Stack。 这种inheritance使用的负面影响是什么,特别是对于类Stack? 非常感谢。