Rmi类加载器被禁用



对于c#背景的Java来说是相当新的。

我想要实现的只是通过jmx和rim向jConsole暴露一个方法。

当我运行我的服务并打开jConsole时,我可以看到那里的方法,一切看起来都很好,现在问题来了,当我试图通过控制台运行这个方法。我得到的错误是"问题调用helloWorld: java.rmi.UnmarshalException:错误解组返回;嵌套异常是:java.lang.ClassNotFoundException: org.springframework.jdbc.CannotGetJdbcConnectionException(没有安全管理器:RMI类加载器禁用)".

我试图暴露的方法是

@ManagedOperation
public int helloWorld() throws Exception {
    return jdbcTemplate.queryForInt(sql);
}

这是我的applicationContext文件

    <!-- this bean must not be lazily initialized if the exporting is to happen -->
<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter" lazy-init="false">
    <property name="assembler" ref="assembler" />
    <property name="namingStrategy" ref="namingStrategy" />
    <property name="autodetect" value="true" />
</bean>
<bean id="jmxAttributeSource" class="org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource" />
<!-- will create management interface using annotation metadata -->
<bean id="assembler" class="org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler">
    <property name="attributeSource" ref="jmxAttributeSource" />
</bean>
<!-- will pick up the ObjectName from the annotation -->
<bean id="namingStrategy" class="org.springframework.jmx.export.naming.MetadataNamingStrategy">
    <property name="attributeSource" ref="jmxAttributeSource" />
</bean>
<context:component-scan base-package="com.bulks" />

<!-- enable annotations like @Autowired, which you also most likely need -->
<context:annotation-config/>
<bean class="com.bulksms.resources.HelloWorldResource"/>
<!-- setup basic datasource -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
    <property name="url" value="jdbc:mysql://localhost:3306/apu"></property>
    <property name="username" value="root"></property>
    <property name="password" value="password"></property>  
</bean>
<!-- jdbcTemplate bean -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource"></property>
</bean>

我错过了什么,所以我的方法可以从控制台执行?

——解决方案因此,在破解了很长一段时间后,我试图将sql部分放在自己的方法中,然后在helloWorld方法....中调用该方法注意啦!!!!成功! !

public int helloWorld() throws Exception {
    setValueFromQuery();
    return value;
}
private void setValueFromQuery() {
    this.value = jdbcTemplate.queryForInt(sql); 
}

你的异常是一个嵌套异常,所以它发生在你的应用程序,

java.lang.ClassNotFoundException: org.springframework.jdbc.CannotGetJdbcConnectionException

假设有一个缺失的类,它可能是jdbc,确保它在你的类路径中。

所以如果你有,检查连接标准到你的DB

相关内容

  • 没有找到相关文章

最新更新