标签: java-melody

在Spring-Boot项目中使用JavaMelody监视spring bean

我正在尝试基于Spring教程构建RESTful Web服务来监视REST应用程序,但在Java Melody文档页面中,配置依赖于web.xml文件,但spring项目没有这样的文件.我尝试使用java旋律注释并在WebInitializer中设置contextConfigLocation,但是当我进入Java Melody页面时,我看不到Spring部分.

我有这样的WebInitializar:

public class WebInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(Application.class).properties();
}

@Override
public void onStartup(ServletContext servletContext) throws ServletException {
    servletContext.setInitParameter("contextConfigLocation", "classpath:net/bull/javamelody/monitoring-spring.xml");
    super.onStartup(servletContext);
}
}
Run Code Online (Sandbox Code Playgroud)

我已经将contextConfigLocation设置为Java Melody文档所说的.

而我的控制器:

@RestController
@MonitoredWithSpring
public class GreetingController {

private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();


@RequestMapping("/greeting")
public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
    return new Greeting(counter.incrementAndGet(),
                        String.format(template, name));
}
}
Run Code Online (Sandbox Code Playgroud)

有什么建议让它起作用吗?

spring java-melody spring-boot

7
推荐指数
2
解决办法
6669
查看次数

限制访问java-melody监控网址

有没有办法可以限制使用Shiro角色访问Grails中的Java-Melody插件生成的/监控URL?

更新:更多细节.这是没有问题的,所以大多数Grails的资源都是shiro.但是在java旋律插件的情况下,似乎在执行shiro过滤器之前执行旋律过滤器.这使得shiro无用.

有一些解决方案可以通过改变web.xml来解决这个问题,但这不是一个快速的问题,我(rdmueller)还没有设法让它工作.web.xml插件似乎也提供了一些帮助,但我不想添加另一个插件来保护一个插件.

网上发现的一些较旧的陈述表明,通过使用loadAfter此文件中的列表已经解决了这个问题:https://github.com/javamelody/grails-melody-plugin/blob/master/GrailsMelodyGrailsPlugin.groovy - 但是似乎这只适用于旧版本的Grails.

Update2:为了更容易提出解决方案,我创建了一个Grails 2.2.4示例:https://github.com/rdmueller/SO30739581

只需克隆项目,执行操作grailsw run-app并导航到

http://localhost:8080/SO30739581/dbdoc
Run Code Online (Sandbox Code Playgroud)

你将通过shiro获得一个登录屏幕.导航

http://localhost:8080/SO30739581/monitoring
Run Code Online (Sandbox Code Playgroud)

你会在没有登录的情况下获得旋律屏幕:-(

grails shiro java-melody

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

如何配置 JavaMelody 来监控 C3p0 数据源中的 Jdbc 连接

我正在使用 Spring 配置文件来配置 C3P0。为了监视我net.bull.javamelody.SpringDataSourceFactoryBean在 javamelody 的用户指南中提到的配置的数据源。但是我的报告显示 0 个活动的 jdbc 连接,而我的 minPoolSize 是 10。我错过了什么?

web.xml添加monitoring-spring.xml

<context-param>
    <param-name>
        contextConfigLocation
    </param-name>
    <param-value>
        classpath:net/bull/javamelody/monitoring-spring.xml,
    </param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)

在 Spring jdbc 配置文件是:

<bean id="sql2oDatasource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <property name="driverClass" value="#{dbProps['ops.jdbc.driverClassName']}"/>
    <property name="jdbcUrl" value="#{dbProps['ops.jdbc.url']}"/>
    <property name="user" value="#{dbProps['ops.jdbc.username']}"/>
    <property name="password" value="#{dbProps['ops.jdbc.password']}"/>
    <property name="maxPoolSize" value="#{dbProps['ops.c3p0.max_size']}"/>
    <property name="minPoolSize" value="#{dbProps['ops.c3p0.min_size']}"/>
    <property name="maxStatements" value="#{dbProps['ops.c3p0.max_statements']}"/>
    <property name="checkoutTimeout" value="#{dbProps['ops.c3p0.timeout']}"/>
    <property name="preferredTestQuery" value="SELECT 1"/>
</bean>
<!-- Configuring the session factory for SQL-2-O -->
<bean id="sql2oSession" class="org.sql2o.Sql2o">
    <constructor-arg ref="wrappedDBDataSource"/>
    <constructor-arg value="PostgreSQL" type="org.sql2o.QuirksMode"/> …
Run Code Online (Sandbox Code Playgroud)

java spring jdbc c3p0 java-melody

6
推荐指数
1
解决办法
2666
查看次数

如何使用JavaMelody记录JPA/SQL查询?

我找到了以下手册https://code.google.com/p/javamelody/wiki/UserGuideAdvanced#JPA_monitoring

它包含一些有关我应该进行的更改的信息persistence.xml,以便让JavaMelody收集JPA/SQL统计信息.

但是,我不太清楚,是否应该providerJavaMelody-provider 替换现有的,还是应该将它放到一个单独的持久性单元中?

我尝试了前一个选项,但它打破了应用程序(构建失败,出现错误,例如'无法将某些代理强制转换为EntityManagerFactory').

java jpa persistence.xml java-melody

5
推荐指数
0
解决办法
812
查看次数

如何让Javamelody使用不同的端口(Spring Boot+暴露的两个HTTP端口)

我有 Spring Boot Web 应用程序。它在端口 8080 上公开 REST API。它还通过 Spring Boot 管理端点公开管理端口 8081 ( http://docs.spring.io/spring-boot/docs/current/reference/html/product-ready-monitoring.html ) 。我没有任何自定义 Tomcat 配置来实现这一点。management.port=8081我的档案里只有财产application.properties

我按照https://github.com/javamelody/javamelody/wiki/UserGuideAdvanced#spring-boot-app中的描述配置了 JavaMelody (我有我的自定义JavaMelodyConfiguration类,带有org.springframework.boot.web.servlet.FilterRegistrationBean寄存器net.bull.javamelody.MonitoringFilter)。

@Bean
    public FilterRegistrationBean javaMelody() {
        final FilterRegistrationBean javaMelody = new FilterRegistrationBean();
        javaMelody.setFilter(new MonitoringFilter());
        javaMelody.setAsyncSupported(true);
        javaMelody.setDispatcherTypes(DispatcherType.REQUEST, DispatcherType.ASYNC);
        javaMelody.addUrlPatterns("/*");
        return javaMelody;
    }
Run Code Online (Sandbox Code Playgroud)

通过此配置,Javamelody 暴露在端口 8080(业务端口)上。我想将其移至8081(管理端口)。如何改变这一点?

我使用 Spring Boot 1.4.2.RELEASE,javamelody 1.62.0

java spring-mvc servlet-filters java-melody spring-boot

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

Grails连接池 - 连接未关闭?

我有一个grails/groovy web-app与数据库连接池.设置如下:

dataSource:
        url: "jdbc:postgresql://192.168.100.53:5432/bhub_dev"
        properties:
          jmxEnabled: true
          initialSize: 5
          maxActive: 25
          minIdle: 5
          maxIdle: 15
          maxWait: 10000
          maxAge: 600000
          timeBetweenEvictionRunsMillis: 5000
          minEvictableIdleTimeMillis: 60000
          validationQuery: SELECT 1
          validationQueryTimeout: 3
          validationInterval: 15000
          testOnBorrow: true
          testWhileIdle: true
          testOnReturn: false
          jdbcInterceptors: ConnectionState
          defaultTransactionIsolation: 2 # TRANSACTION_READ_COMMITTED
Run Code Online (Sandbox Code Playgroud)

我正在使用java-melody进行诊断和监控,并注意到一些奇怪的行为.例如,在执行查询DB的作业时,连接可以克服maxActive属性.为什么这甚至可能?

在此输入图像描述

我是否需要明确关闭Grails连接?该作业调用一个服务方法,通过withCriteria Grails调用简单地执行数据库查询,如:

def activities = WorkActivity.withCriteria{
     eq("workCategoryActive", true)
     order("id", "desc");
}
Run Code Online (Sandbox Code Playgroud)

并且似乎每次运行时,都会打开2个新连接,并且它们不会每次都正常关闭.

此外,在每个页面刷新时,都有一些调用后端来执行查询,有时即使刷新2个新连接似乎也会打开.

在此输入图像描述

我是Grails dev的新手,所以我不知道我是否必须/甚至可以通过Criteria数据库连接来关闭它.

任何一点帮助表示赞赏.数据库是PGSQL.

编辑:好的,所以现在我正在看java-melody中的线程诊断,看起来Tomcat池清理器处于等待状态,这就是为什么连接数没有下降?此外,似乎每次运行该作业时,2个线程都会启动,而其中一个线程会等待等待?这到底是怎么回事.

在此输入图像描述

database grails groovy connection-pooling java-melody

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

更改URL映射-Javamelody

我在我的应用程序中使用Javamelody.我只需要root用户访问统计信息.Javamelody默认情况下可以访问

http://localhost/webapp/monitoring
Run Code Online (Sandbox Code Playgroud)

我需要改成它

http://localhost/webapp/monitor/monitoring
Run Code Online (Sandbox Code Playgroud)

我已经完成了以下过滤器映射

<filter>
    <filter-name>monitoring</filter-name>
    <filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>monitoring</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
    <listener-class>net.bull.javamelody.SessionListener</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)

servlet-filters java-melody

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

java melody - spring 没有 sql stat - 没有 JNDI

我有一个带有 javamelody 的 Spring Maven 项目。

我使用 hibernate 和 spring,没有任何 JNDI 数据源。

xml conf中的数据源:

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://${database.location}:${database.port}/${database.dbname}?zeroDateTimeBehavior=convertToNull&amp;characterEncoding=utf8"/>
        <property name="username" value="${database.username}"/>
        <property name="password" value="${database.password}"/>
    </bean> 

 <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" />
        <property name="persistenceUnitName" value="rtt-backend" />
        <property name="dataSource" ref="dataSource" />
        <property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
        <property name="jpaDialect" ref="jpaDialect" />
    </bean>

    <bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
        <property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect" />
        <property name="database" value="MYSQL" />
        <property name="showSql" value="false" />
    </bean>

    <bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate maven java-melody

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