一个斜杠引起的思考

最近关注 WebService,尝试CXF的一个 Client 样例 时,修改一下,运行,总是报这个错:
Caused by: java.net.MalformedURLException: Invalid address. Endpoint address cannot be null.
……

本来想跳过它了,但是很简单的修改,如下

public static final QName SERVIVE_NAME = new QName(
		"http://ws.leegorous.net", "Hello");
public static final QName PORT_NAME = new QName(
		"http://ws.leegorous.net", "HelloPort");

public static void main(String[] args) {
	Service service = Service.create(SERVIVE_NAME);

	String endpointAddress = "http://localhost:9000/hello";
	service.addPort(PORT_NAME, SOAPBinding.SOAP11HTTP_BINDING,
			endpointAddress);

	Hello srv = service.getPort(Hello.class);
	System.out.println(srv.sayHi("Leegorous"));
}

感觉离真相很近,但怎么都搞不着的感觉真是糟糕~

于是开始调试,调试一下也不错,可以顺便大概了解下过程,但是越挖掘,越觉得奇怪。小说电视里,经常吹嘘当找不到方向时不妨回到原点,这个的原点就是我修改的部分。

很奇怪的发现样例里初始化QName的第一个参数是以”/”结尾的,我想不会吧。
一边质疑着自己,一边加上斜杠,运行测试,居然成功了!

public static final QName SERVIVE_NAME = new QName(
		"http://ws.leegorous.net/", "Hello");
public static final QName PORT_NAME = new QName(
		"http://ws.leegorous.net/", "HelloPort");

已经找到步向真相的入口了。或许是QName的问题,也可能是后面使用它的程序有问题,具体还有待解剖报告。

这个问题貌似不太值得一写。不过它使我想起昨晚发现的一起事件,某报文系统已经运行了数年,但居然还有比较低级的解析失败,而且最糟糕就是搜索过分依赖于那个出错的属性。而据我观察,好些系统问题都是有各种各样的“小”而且不太可能发生的失误而造成的,也正是大家都不是仔细收集和分析证据,而是先入为主的否决了其些可能性转而去思考所谓的更大可能性,而浪费了大量的时间。

不过有些先入为主的印象作用是我们不能左右的,就如现在人们在介绍我时依然是用类似于“一个Web界面高手”,甚至是“美工”,除了无奈,还能做什么呢?

难道跳出来大叫
“That’s so 2007”

!##$%^&*()~~