`

使用telnet连接到基于spring的应用上执行容器中的bean的任意方法

 
阅读更多
使用telnet连接到基于spring的应用上执行容器中的bean的任意方法

使用telnet连接到基于spring的应用上执行容器中配置的任何bean的任意方法,可以用来诊断某个方法是否执行有问题,响应时间多少,在生产环境中可以很好的定位及监控方法是否存在问题。

代码在:https://github.com/zhwj184/springInvokemonitor

	git clone git@github.com:zhwj184/springInvokemonitor.git 

	maven clean install

pom依赖:

	<dependency>
		<groupId>org.zhwj184</groupId>
		<artifactId>springinvokemonitor</artifactId>
		<version>1.0-SNAPSHOT</version>
	</dependency>
	
使用方式,在spring的配置文件中添加下面这个bean即可。

	<bean id="ServiceInvokeClient" class="org.zhwj184.ServiceInvokeClient" />
	
使用示例:先写一个service TestBean,里面有两个方法,add和addBean

	import com.alibaba.fastjson.JSON;

	public class TestBean {

		public float add(int a, float b){
			return a + b;
		}
		
		public A addBean(A a, A b){
			A c = new A();
			c.setC(a.getC() + b.getC());
			c.setD(a.getD() + b.getD());
			return c;
		}
		public static void main(String[] args) {
			A c = new A();
			c.setC(23);
			c.setD(323.34);
			System.out.println(JSON.toJSON(c));
		}
		
	}

	class A{
		int c ;
		double d;
		public int getC() {
			return c;
		}
		public void setC(int c) {
			this.c = c;
		}
		public double getD() {
			return d;
		}
		public void setD(double d) {
			this.d = d;
		}
		
	}
	
然后在spring配置文件 service.xml添加

	<bean id="testBean" class="org.zhwj184.TestBean" />
	<bean id="ServiceInvokeClient" class="org.zhwj184.ServiceInvokeClient" />
	
写一个测试类,执行这个main方法,

	import org.springframework.context.support.ClassPathXmlApplicationContext;

	public class MainTest {

		/**
		 * @param args
		 * @throws InterruptedException 
		 */
		public static void main(String[] args) throws InterruptedException {
			ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:service.xml");
			Thread.sleep(100000000);
		}

	}

然后通过telnet连到这个服务上,打开命令行窗口,输入telnet localhost 12667,连上之后,输入ls bean名称,即可查询这个bean的所有方法,使用invoke beanname.method(param1,param2) 执行某个方法,参数如果为bean则可以使用json格式传入,参数之间用;分隔


	======================================================

	   Welcome to Telnet Server: Version 1.0

	======================================================

	List of possible commands:

	Status: displays the status of the server
	cd : [ cd /usr/local]
	pwd: displays the working directory
	ls: displays list of files in the working directory
	mkdir : [ mkdir /usr/local/tmp]
	exit : quit this programme

	ls testBean
	org.zhwj184.A org.zhwj184.TestBean.addBean(org.zhwj184.A,org.zhwj184.A)
	void org.zhwj184.TestBean.main([Ljava.lang.String;)
	float org.zhwj184.TestBean.add(int,float)
	int org.zhwj184.TestBean.hashCode()
	java.lang.Class org.zhwj184.TestBean.getClass()
	void org.zhwj184.TestBean.wait(long,int)
	void org.zhwj184.TestBean.wait()
	void org.zhwj184.TestBean.wait(long)
	boolean org.zhwj184.TestBean.equals(java.lang.Object)
	java.lang.String org.zhwj184.TestBean.toString()
	void org.zhwj184.TestBean.notify()
	void org.zhwj184.TestBean.notifyAll()

	invoke testBean.add(1;2.4)
	result:java.lang.Float 3.4
	run time: 0ms

	invoke testBean.addBean({"c":23,"d":323.34};{"c":3433,"d":3232433.34})
	result:org.zhwj184.A {"c":3456,"d":3232756.6799999997}
	run time: 0ms

这样可以诊断spring容易中任何bean的任意方法,执行方法,看看返回结果是否跟预期的一致。一般生产环境跟测试环境很多依赖条件(数据库,服务等)都不一样,所以线上出现问题一般都可以知道参数,通过执行方法就可以看看结果是否正确,并且查看某个方法的执行时间来看方法是否有性能问题。

不过这里的代码只是简单做个示例,代码中关于参数的类型,结果匹配反射等可能不够完善也没有测试得很充分,有问题有兴趣的环境反馈给我。

 

1
1
分享到:
评论

相关推荐

    SecureCRT批量telnet连接脚本

    3. **循环处理**:对于每个读取到的IP地址,建立telnet连接,执行预设的命令,然后断开连接。 4. **错误处理**:包含适当的错误处理机制,如捕获无法连接或命令执行失败的情况。 在实际应用中,可能还需要根据具体...

    telnet方式连接工具

    telnet是一种远程登录协议,它允许用户通过Internet连接到另一台计算机,并在这个远程计算机上进行工作,就像坐在那台计算机前一样。这种技术在早期网络中广泛应用,用于系统管理员远程管理服务器、测试网络服务等...

    使用批处理实现telnet自动登陆并执行ping命令

    本文将深入探讨如何使用批处理(BAT)脚本来实现通过telnet进行自动登录并执行ping命令,以此来远程检测网络连通性。这在监控服务器、网络故障排查或自动化测试场景下尤为常见。 首先,让我们理解一下涉及的三个...

    基于spring的Mina框架

    完成Mina应用的开发后,将其部署到服务器上,可以使用telnet命令进行简单的测试,验证TCP服务是否正常工作。更复杂的测试可以通过编写集成测试用例来实现,确保业务逻辑的正确性。 总的来说,基于Spring的Mina框架...

    java-telnet连接远程服务器并执行shell命令

    java-telnet连接远程服务器并执行shell命令 具体代码 java-telnet

    telnet 客户端连接C++ 实现

    telnet 客户端的c++实现,socket模拟实现telnet 的远程连接。以及telnet 的模拟其他指令发送 接收。

    linux下自动telnet到远程主机上运行的脚本.pdf

    本脚本使用到了管道和后台运行 telnet 的技术,可以在远程主机上执行各种命令,并将输出记录到文件中。 知识点一:Telnet 命令 Telnet 是一种远程登录协议,允许用户从远程主机上登录到另一个主机上。Telnet 命令...

    telnet自动登录执行相关命令

    在这个场景中,我们关注的是使用Python进行telnet自动登录并执行特定命令的功能。Telnet是一种远程访问协议,常用于配置和诊断网络设备,如路由器、交换机等。而通过编程实现自动化,可以显著减少手动操作的时间和...

    基于Socket的Telnet服务设计与实现

    "基于Socket的Telnet服务设计与实现" 一、Telnet协议概述 Telnet协议是TCP协议族中的一员,是Internet远程登录服务的标准协议。远程登录是指用户使用Telnet命令,使自己的计算机成为远程主机的一个仿真终端的过程...

    telnet自动连接脚本

    在这个场景中,我们关注的是"telnet自动连接脚本",这涉及到远程终端服务和自动化技术。telnet是一种古老但仍然广泛使用的协议,允许用户通过网络控制远程主机的命令行界面。在描述中提到的“ftprun1.bat”和...

    java 实现telnet服务器执行脚本

    在IT领域,远程访问和管理服务器是常见的需求,而Telnet协议提供了一种基于文本的网络通信方式,允许用户从远程客户端连接到服务器并执行命令。Java作为一种广泛应用的编程语言,提供了丰富的库来支持这种通信。以下...

    java通过telnet方式连接服务器

    java源代码,通过telnet方式连接服务器,可以设置是否记录日志等信息。经过稍微改动可以实现类似crt软件的功能。

    使用 telnet 如何连接到另一个计算机

    Telnet的应用不仅方便了我们进行远程登录,也给hacker们提供了又一种入侵手段和后门,但无论如何,在你尽情享受Telnet所带给你的便捷的同时,你是否真正的了解Telnet呢? Telnet服务虽然也属于客户机/服务器模型的...

    Telnet一键连接并执行指令

    一键连接Telnet客户机并执行指令,右键编辑IP、用户名、密码和指令

    远程桌面连接和telnet远程桌面

    ### 远程桌面连接与Telnet远程访问详解 #### 一、远程桌面连接概述 远程桌面连接是一种允许用户从一个位置远程控制另一台计算机的技术。...在实际应用中,应根据具体情况选择合适的方法,并注意保护网络安全。

    c#实现telnet功能

    在IT行业中,网络通信是至关重要的部分,而`telnet`是一种基础的远程登录协议,允许用户通过命令行界面连接到远程服务器并执行各种操作。本文将深入探讨如何使用C#编程语言实现telnet功能,并结合提供的文件名称...

    linux下批量并行telnet对端端口的实现方法-电脑资料.pdf

    这个脚本将读取ip.list文件中的IP地址列表,对每个IP地址使用Telnet连接到22端口,并将结果记录到telnet_result.txt文件中。 3. 使用并行执行来加速Telnet 为了加速Telnet过程,可以使用并行执行来同时连接多个...

    一个简单的Telnet连接工具

    本文将深入探讨“一个简单的Telnet连接工具”,了解其工作原理、使用方法以及相关的安全考量。 【描述】:“Telnet连接” Telnet连接是指通过Telnet协议建立的通信链路,使得本地计算机能够模拟远程主机的终端。这...

    java远程进行telnet,ftp,ssh连接的方法及源代码.rar

    Java语言在IT行业中被广泛应用,尤其在网络通信和系统管理领域,它提供了丰富的库来支持远程连接功能,如telnet、ftp和ssh。本资源包"java远程进行telnet,ftp,ssh连接的方法及源代码.rar"就是针对这些功能的一个详细...

    使用java实现telnet-client工具分享

    Telnet协议是一种网络协议,允许用户通过网络连接到远程主机并执行命令,类似于SSH(Secure Shell)但不提供加密和安全性的保障。Apache Commons Net库提供了对Telnet协议的支持,使得开发者可以用Java方便地创建...

Global site tag (gtag.js) - Google Analytics