一、Spring配置的方式:
1、客户端:
client.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="mbeanClient" class="org.springframework.jmx.support.MBeanServerConnectionFactoryBean">
<property name="serviceUrl" value="service:jmx:rmi://localhost/jndi/rmi://localhost:2012/springjmx"></property>
</bean>
</beans>
SpringJmxClientMain
package client;
import javax.management.Attribute;
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpringJmxClientMain {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
ApplicationContext context = new ClassPathXmlApplicationContext(
"client.xml");
MBeanServerConnection client = (MBeanServerConnection) context
.getBean("mbeanClient");
ObjectName objName = new ObjectName("springjmx:name=TestBean");
String result = (String) client.invoke(objName,
"printMessage", new Object[] { "Mike" },
new String[] { "java.lang.String" });
System.out.println("Client: result "+result);
String orgMessage = (String) client.getAttribute(objName, "Message"); //Why Message is Pascal style?
System.out.println("Client: orgMessage "+orgMessage);
Thread.sleep(20000);
client.setAttribute(objName, new Attribute("Message","Welcome"));
result = (String) client.invoke(objName,
"printMessage", new Object[] { "Mike" },
new String[] { "java.lang.String" });
System.out.println("Client: result "+result);
// logback jmx configurator
ObjectName logName = new ObjectName("ch.qos.logback.classic:Name=GatewayLog,Type=ch.qos.logback.classic.jmx.JMXConfigurator");
Object loggerList = client.getAttribute(logName, "LoggerList");
System.out.println(loggerList.getClass());
System.out.println(loggerList);
}
}
2、服务端
server.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="testBean" class="server.TestBean"></bean>
<bean id="assembler" class="org.springframework.jmx.export.assembler.InterfaceBasedMBeanInfoAssembler">
<property name="managedInterfaces">
<list>
<value>server.ITestBean</value>
</list>
</property>
</bean>
<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter">
<property name="beans">
<map>
<entry key="springjmx:name=TestBean" value-ref="testBean"></entry>
</map>
</property>
<property name="assembler" ref="assembler"></property>
</bean>
<bean id="rmiReg" class="org.springframework.remoting.rmi.RmiRegistryFactoryBean" destroy-method="destroy">
<property name="alwaysCreate" value="true"></property><!-- without alwaysCreate may throw a ConnectionException -->
<property name="port" value="2012"></property>
</bean>
<bean class="org.springframework.jmx.support.ConnectorServerFactoryBean" depends-on="rmiReg">
<property name="serviceUrl" value="service:jmx:rmi://localhost/jndi/rmi://localhost:2012/springjmx"></property>
</bean>
</beans>
SpringJmxServerMain
package server;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpringJmxServerMain {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
ApplicationContext context = new ClassPathXmlApplicationContext(
"server.xml");
TestBean bean = (TestBean) context.getBean("testBean");
System.out.println("Server started");
Thread.sleep(1000 * 1000);
}
}
package server;
public interface ITestBean {
public String getMessage();
public void setMessage(String message);
public String printMessage(String name);
}
package server;
public class TestBean implements ITestBean {
private String message = "Hello";
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String printMessage(String name) {
String str = message + " " + name;
System.out.println(str);
return str;
}
}
分享到:
相关推荐
- **自动代码生成**:XFire能够自动生成服务端和客户端的绑定代码,大大减少了开发时间。 - **WSDL支持**:XFire可以动态生成WSDL文档,描述Web Service的接口和绑定信息。 - **数据绑定**:XFire支持多种数据绑定...
3. **高级与低级API**:Mina支持两种级别的API,即低级API(基于字节缓存)和高级API(基于用户定义的消息对象),以便开发者根据具体需求选择最适合的方式。 4. **可定制的线程模型**:可以根据应用的需求选择不同...
- **编解码器**:介绍如何使用Mina提供的编解码器过滤器对网络数据进行编码和解码。 #### Chapter 10 - Executor过滤器 - **执行器**:探讨了Mina中的Executor过滤器,用于管理和调度线程,确保程序高效运行。 ##...
- **IoServer**: 提供了IoAcceptor和IoConnector两个接口,分别用于服务端和客户端的连接。 - **IoAcceptor**: 负责监听端口并接受客户端连接,可以绑定多个端口。 - **IoConnector**: 用于客户端发起连接请求。 -...
部署时,需要配置服务的URL、端口和绑定的接口信息。 5. **消费Web服务**: 客户端可以使用XFire提供的客户端API或生成的客户端代理类来调用Web服务。生成的客户端代理类提供了与服务端点接口相同的方法,使得调用...
MINA作为一款优秀的客户端/服务器架构下的Java服务器框架,凭借其强大的功能和灵活性,在开发高性能网络应用程序方面表现突出。本文将深入探讨MINA的核心概念、优势以及如何利用它构建高效稳定的网络应用。 #### ...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证...