小编Ste*_*son的帖子

while循环中的Thread.sleep()

我注意到NetBeans警告我在我的Java代码中使用while循环中的Thread.sleep(),所以我已经对这个主题进行了一些研究.主要问题似乎是性能问题,当计数器仍处于休眠状态时,你的状态可能会变为真,因此在等待下一次迭代时会浪费挂钟时间.这一切都很有道理.

我的应用程序需要联系远程系统并定期轮询操作状态,等待操作完成后再发送下一个请求.目前,代码在逻辑上执行此操作:

String state = get state via RPC call
while (!state.equals("complete")) {
    Thread.sleep(10000); // Wait 10 seconds
    state = {update state via RPC call}
}
Run Code Online (Sandbox Code Playgroud)

鉴于情况是检查远程操作(这是一个有点昂贵的过程,因为它运行了几秒钟),这是一个在while循环中有效使用Thread.sleep()吗?有没有更好的方法来构建这个逻辑?我已经看到了一些我可以使用Timer类的例子,但是我没有看到它的好处,因为它似乎仍然归结为上面相同的直接逻辑,但是引入了更多的复杂性.

请记住,在这种情况下,远程系统既不是我的直接控制,也不是用Java编写的,因此在这种情况下将此端更改为"合作"不是一种选择.我更新应用程序状态值的唯一选择是创建和发送XML消息,接收响应,解析它,然后提取我需要的信息.

任何建议或意见都是最受欢迎的.

java sleep while-loop

21
推荐指数
1
解决办法
3万
查看次数

JavaMail的DCH类错误

我正在尝试使用Glassfish 3.1提供的jar文件在Java EE 6中使用JavaMail设置简单的日志记录测试.关于这个问题似乎有很多问题,但我还没有找到任何有帮助的答案.我的测试代码如下所示:

import java.util.logging.Logger;

public class MyClass {
  private static final Logger LOGGER = Logger.getLogger("MyClass");

  public static void main(String[] args) {
    LOGGER.severe("This is a test");
  }
}
Run Code Online (Sandbox Code Playgroud)

我的logging.properties文件包含以下内容:

com.sun.mail.util.logging.MailHandler.mail.smtp.host={my mail hub FQDN}
com.sun.mail.util.logging.MailHandler.mail.smtp.port=25
com.sun.mail.util.logging.MailHandler.mail.to={me}
com.sun.mail.util.logging.MailHandler.mail.from={support address}
com.sun.mail.util.logging.MailHandler.level=WARNING
com.sun.mail.util.logging.MailHandler.verify=local
com.sun.mail.util.logging.MailHandler.subject=Application Error
com.sun.mail.util.logging.MailHandler.formatter=java.util.logging.SimpleFormatter
Run Code Online (Sandbox Code Playgroud)

我使用以下方法构建类:

javac -cp $AS_INSTALL/glassfish/modules/javax.mail.jar:$AS_INSTALL/install/lib/external/jaxb/activation.jar:. MyClass.java
Run Code Online (Sandbox Code Playgroud)

然后我运行程序使用:

java -cp $AS_INSTALL/glassfish/modules/javax.mail.jar:$AS_INSTALL/install/lib/external/jaxb/activation.jar:. -Djava.util.logging.config.file=logging.properties MyClass
Run Code Online (Sandbox Code Playgroud)

这会导致以下错误:

Sep 22, 2011 4:19:25 PM MyClass main
SEVERE: This is a test
java.util.logging.ErrorManager: 3: SEVERE: no object DCH for MIME type multipart/mixed;
        boundary="----=_Part_1_26867996.1316722766145"
javax.activation.UnsupportedDataTypeException: no …
Run Code Online (Sandbox Code Playgroud)

logging glassfish jakarta-mail java-ee-6

11
推荐指数
4
解决办法
1万
查看次数

Glassfish管理控制台加载空白页

我有一个问题登录到Glassfish 3.1.2的管理控制台上,四个相同(至少是理论上)配置域在不同服务器上的一个.当我登录那个无效的那个时,我被重定向到一个空白页:

https:// {server}:{admin port}/j_security_check

它附带此日志消息:

[#|2013-02-18T09:58:02.912-0500|SEVERE|glassfish3.1.2|org.glassfish.admingui|_ThreadID=20;_ThreadName=Thread-2;|javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: signature check failed; javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: signature check failed; restRequest: endpoint=https://localhost:9048/management/domain/anonymous-user-enabled attrs={} method=GET|#]
Run Code Online (Sandbox Code Playgroud)

其他信息:

我启用了安全管理,并禁用了匿名用户.

我可以使用相同的用户/密码请求https:// {server}:{admin port}/management/domain,并成功启动REST接口.请求/管理/域/启用匿名用户确实会触发相同的问题(空白页,记录的错误).

我可以使用相同的用户/密码运行"asadmin -p {admin port}"并成功运行命令行命令.

我似乎记得在某一点跟踪这一点,管理控制台试图从sun.com域上的服务器提取文件,SSL证书已经过期,但我似乎无法找到我申请的解决方案当时.

我试图使用其中一个正在运行的服务器上的cacerts.jks文件,但这没有帮助.

我在keystore.jks中的s1as证书的失效日期仍然是8年.

服务器上的日期/时间设置正确.

谢谢你的任何建议.

史蒂夫

console ssl admin glassfish

5
推荐指数
1
解决办法
8101
查看次数

tools.gzip似乎不会压缩cherrypy中的内容

我正在使用Chrome和Firefox下的Yslow工具审查我的开发网站,其中一个建议是我gzip适当的内容.作为起点,我刚刚将"tools.gzip.on = True"添加到我的[/]配置中.我知道配置文件和块正在被正确解析,因为我还在响应头中添加了禁用缓存的选项,因为我在开发站点时经常更改文件.我在回复中看到"Expires"和"Pragma:no-cache"标题.

出于某种原因,即使在更改配置文件(并重新启动过程,这不是绝对必要的)之后,Yslow仍然报告我没有使用gzip.我也一直在使用wget并且看不到Content-Encoding标头.

任何人都可以建议我如何验证发生了什么?我想知道这个问题是否忽略了gzip设置,或者Yslow只是弄错了事实.我之前从未遇到过Yslow的麻烦,所以我倾向于前者.

我要补充一点,Yslow只报告我的外部CSS和JavaScript文件(由同一个樱桃过程提供服务)需要压缩,即使"wget -S"显示的标题甚至不显示gzip编码页面本身(动态内容).

我尝试将"tools.gzip.on = True"添加到我的[/ ​​css]和[/ js]块中,我也尝试在所有相同的块中设置"tools.encode.on = True",想想也许编码必须启用gzip才能工作.

提前致谢.

gzip cherrypy yslow

3
推荐指数
1
解决办法
2767
查看次数