小编Ada*_*dam的帖子

监控Java Web应用程序 - JMX是正确的选择吗?

我们有一个Java Web应用程序,我们希望设置一些基本监控,以便将来扩展此监控.我们的计划如下:

(1)收集有关运行应用程序的Web容器的虚拟机的通用信息(例如内存和线程).

(2)监控应用程序的"状态".这是相当模糊的,但至少我们想看看Web应用程序是否还活着并且可以响应请求.

(3)将来我们希望收集更多特定于我们申请的信息.同样,这是相当模糊的,但您可以假设我们可能希望由支持人员可用的应用程序在内部收集某些统计信息.

通常,Web应用程序将部署在Tomcat 5.5或6环境中.在Web上快速搜索一下,可以为Tomcat启用JMX,然后可以使用JConsole连接到服务器.这为我们提供了许多解决要点(1)的基本信息.此外,"Catalina"的MBeans部分提供了一些信息,并且至少可以深入了解这一点,例如,查看特定servlet收到的请求数量.这不是我们想要的第(2)点,但至少给了我们一些信息.那里似乎有很多信息,但使用JConsole解释相当困难.也许有一个更好的工具来解释Tomcat暴露的MBean.

对于第(3)点,乍一看似乎我们可以编写自己的MBean,然后将它们提供给像JConsole这样的东西.就个人而言,这将涉及我学习JMX,我很乐意这样做,但我有一个问题.环顾四周后,我注意到这个主题的大部分教科书已经好几年没有更新,开源工具似乎在没有最新更新的情况下萎靡不振.所以我的主要问题很简单.您对JMX有何看法?它有未来还是被其他东西取代?鉴于我们已经拥有了我们的Web应用程序但是我们从头开始管理控制台,我们应该选择JMX还是更合适一些更好的未来呢?

我问这个问题没有个人斧头,我只是想听听你的意见和经验.我确信没有一个正确的答案,但我认为一个知情的讨论会很有用.

提前致谢,

亚当.

java monitoring tomcat jmx web-applications

12
推荐指数
1
解决办法
3995
查看次数

用于Hibernate的Maven Java源代码生成

我正忙着将现有项目从Ant构建转换为使用Maven的项目.此构建的一部分包括使用hibernate hbm2java工具将.hbm.xml文件的集合转换为Java.这是用于执行此操作的Ant脚本的片段:

<target name="dbcodegen" depends="cleangen" 
        description="Generate Java source from Hibernate XML">
  <hibernatetool destdir="${src.generated}">
    <configuration>   
      <fileset dir="${src.config}">
        <include name="**/*.hbm.xml"/>
      </fileset>
    </configuration>   
    <hbm2java jdk5="true"/>
  </hibernatetool>   
</target>
Run Code Online (Sandbox Code Playgroud)

我在互联网上看了一下,有些人似乎这样做(我认为)使用Maven中的Ant和Maven插件中的其他人.我宁愿避免混合Ant和Maven.任何人都可以建议一种方法来执行此操作,以便拾取所有.hbm.xml文件并生成代码作为Maven代码生成构建阶段的一部分吗?

谢谢!

亚当.

ant orm maven-2 hibernate hbm2java

7
推荐指数
1
解决办法
9082
查看次数

使用JavaFx和TestFx进行无头测试

我有一个简单的JavaFx应用程序(Java 8),它使用TestFx进行单元测试.但是,运行测试时,应用程序窗口会启动并移动鼠标以执行我的测试中的任何操作.这些测试能否以应用程序不弹出的方式运行,我仍然可以在自动构建和测试运行时将鼠标用于其他事情?

unit-testing javafx javafx-8 testfx

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

在两个单独的向量中创建对 Rust 字符串的引用

我有一个输入向量String,我想创建两个包含&str对这些字符串的引用的向量。这是我正在尝试的简化版本(输入被简单的向量初始化替换):

let colours = vec!["red".to_string(), "black".to_string(), "blue".to_string()];
let mut starts_with_b = Vec::new();
let mut ends_with_e = Vec::new();

for colour in colours {
    if colour.starts_with("b") {
        starts_with_b.push(&*colour);
    }
    if colour.ends_with("e") {
        ends_with_e.push(&*colour);
    }
}

println!("{:?}", starts_with_b);
println!("{:?}", ends_with_e);
Run Code Online (Sandbox Code Playgroud)

此代码会产生编译器错误“‘颜色’的寿命不够长”。我该如何解决这个问题?

我发现如果我从字符串引用开始,这个问题就不存在&str

let colours = vec!["red", "black", "blue"];
let mut starts_with_b = Vec::new();
let mut ends_with_e = Vec::new();

for colour in colours {
    if colour.starts_with("b") {
        starts_with_b.push(colour);
    }
    if colour.ends_with("e") {
        ends_with_e.push(colour);
    }
}

println!("{:?}", starts_with_b);
println!("{:?}", …
Run Code Online (Sandbox Code Playgroud)

rust

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

Java 8 句子流

I\xe2\x80\x99d 喜欢使用 Java 8 流来获取字符串流(例如从纯文本文件中读取)并生成句子流。我认为句子可以跨越界限。

\n\n

例如,我想从:

\n\n
"This is the", "first sentence.  This is the", "second sentence."\n
Run Code Online (Sandbox Code Playgroud)\n\n

到:

\n\n
"This is the first sentence.", "This is the second sentence."\n
Run Code Online (Sandbox Code Playgroud)\n\n

我可以看到它 \xe2\x80\x99s 可以得到句子部分的流,如下所示:

\n\n
Pattern p = Pattern.compile("\\\\.");\nStream<String> lines\n   = Stream.of("This is the", "first sentence.  This is the", "second sentence.");\n\nStream<String> result = lines.flatMap(s -> p.splitAsStream(s));\n
Run Code Online (Sandbox Code Playgroud)\n\n

但后来我\xe2\x80\x99m 不确定如何生成一个流来将片段连接成句子。我想以一种惰性的方式执行此操作,以便仅读取原始流中需要的内容。有任何想法吗?

\n

java java-8 java-stream

2
推荐指数
1
解决办法
1785
查看次数