ref:
http://thought-bytes.blogspot.com/2007/03/how-to-load-balance-tomcat-55-with.html
??xml version="1.0" encoding="utf-8" standalone="yes"?>
jre 1.5 or 1.6, tomcat 5525, eclipse, axis2
and in eclipse preferences set tomcat to web server, set jre env and set axis2's runtime
2. create a java project and add axis2 runtime library to its build library
test ws client sample code:
public class TestSms
{
private static EndpointReference targetEPR = new EndpointReference(
"http://cdl:8080/axis2/services/Version");
public static OMElement getGetLeftElement(){
OMFactory fac=OMAbstractFactory.getOMFactory();
OMNamespace omNs=fac.createOMNamespace("此处填写WS的命名空?,"hw");
OMElement method=fac.createOMElement("WS Ҏ?,omNs);
OMElement value = fac.createOMElement("参数一", omNs);
value.addChild(fac.createOMText(value, "g"));
method.addChild(value);
value = fac.createOMElement("参数?, omNs);
value.addChild(fac.createOMText(value, "?"));
method.addChild(value);
return method;
}
public static void main(String[] args){
try{
Options options=new Options();
options.setTo(targetEPR);
options.setAction("命名I间/WS Ҏ?);
ServiceClient sender=new ServiceClient();
sender.setOptions(options);
OMElement sayHello=TestSms.getGetLeftElement();
//WSDLConstants.
OMElement result=sender.sendReceive(sayHello);
OMElement elem = result.getFirstElement();
System.out.println(elem.getText());
//System.out.println(result);
}
catch(Exception axisFault){
axisFault.printStackTrace();
}
}
}
Internet Explorer 4.x 及更高版?br />
最后不要忘了在q里试一下是否安装成? http://www.java.com/zh_CN/download/help/testvm.xml
整天都在忙,不管是公司的事还是自q研究Q这一q就没有几天晚上?2点之前睡的,在上一个公司经常是晚上11点回ȝ觉,现在q家公司是回M后l搞Q所有的业余爱好都没有了Q买了个DCQ也没怎么用,什么都没有心情Q事情L在那里等着Q视力又下降了,w体感觉不如从前了。记忆力也下降了Q前一阵子的事都不记得了,只知道这两天做了些啥?BR>虽然又长了一岁,其它到是没什么长q?
使用JAVAq_的问?
1. 开发工具太? 什么Eclipse, jbuilder{?各有不同, 让h熟悉p旉? 本ؓ以ؓ对JB比较熟悉,又有2006版本? q它吧, 可是才两? 发现自q代码文g中的中文变ؓq? 当然|上有一堆解x? 只是心里不爽, 直接不用? 改ؓeclipse? 操作界面不是很熟? 与VS.NET IDEq是有不区? 只是用多了自然就熟悉?
又从|上当了一堆插? 什么tomcat, xml~辑? 没有用myeclipse, 虽然支持JSP,以前用过一? 也不太好? 其它的就没找C么好东西? 旉也不允许, 臛_现在可以调度JAVA代码? JSP的调试再说吧.
2. 开始整的时?发现自己在WEB开发方面熟悉的是VS的ASPX事g模型, 反而不知道如何处理JSP? 只好使用以前ASP的模? 使用form提交, 感觉真是太落伍了, 虽然现在有许多AJAX之类的东? 也支持客L事g模型, 实在没时间研I这些东西了. 先做出来再说.
数据库连接类使用了以前jive中的几个c? 支持在xml中配|连接等, 再自己写了一个类, 从XML中读取SQL语句, 差不多能?
3。在|上搜烦了一把,未找到在eclipse中对web service支持比较好的pluginQ发现版本都比较低,g久未更新了,JB下到是有不错的设计和~译界面Q只是JB其它太烂?/P>
字符集问题:
使用java首先pC一个中文字W的昄和处理问? q些问题L很烦, 要对requestq行~码才能解决.
既然使用非MSq_, 数据库可能就不会用到mssql server? 使用mysql, 发现要移植以前的数据q是比较Ҏ, 但mysql的驱动实在不好弄, 刚开始用纯JDBC的驱? l果发现在中文字W的处理上始l有问题, 只好
|上查原? 发现jdbc驱动的版本太? 在判断中文字W上有问? 升驱动E序, 可以插入和显CZ, 但SQL中是中文, 可是q了数据库就是ؕ? 试了N遍也不行, 只好改ؓjdbc-odbc.
但接下来在执行batch sql时又报错? 说mysql odbc driver 的SQL语法? 查了半天, SQL也能在mysql中执行的, 是不能通过JAVA提交执行. 用的是mysql 5.0.X, 支持unicode 的编码徏? 最后只能采用一个折L办法Q自己写一个批量执行SQL的类Q采用“;”分隔多个SQLQ在调用时仍然一行一行的执行Q郁闗?/P>
最l的字符集解军_法:
面上要讄字符集的输出格式Q如GBK或GB2312Q另外,如果使用l一的包含文件定义输出字W集Q还是不行,必须在每个页面中单独定义Q也可能是我的INCLUDE方式不对;
数据库连接字W串中也要设|编?
在传递数据到DB的SQLq要对中文进行编?
String key = new String(request.getParameter("txtKey").getBytes("ISO8859_1"));
最后还有一个问题是Q如果TOMCAT~译JSP文g生成的JAVA文g有ؕ码,那么在访问的时候页面上L要报错,什?delete tokens"之类的,此时要删除掉tomcat\work目录下的中间~译代码才行Q?/P>
控g及常用库
WEB控g, |上有一堆各U各Llib和控? 但这些东西太费旉, 光是上网扑ְ比较花时间了, 下回来试用也有各U各L问题,
每个控g有自q特色, 而且每个L满了这?满不了那个需? 要都满, q是要收费的才行, 毕竟天下没有多少免费的午?
主要有几个:
1。数据显C格控Ӟ应该能支持排序,有缓存机Ӟ能分,能设|格式,支持ResultSet或ArrayList之类的,q要有导出excel{功能;最好要能简单用?BR> 2。图表控Ӟ最有名的当然是cewolf/jfreechartQ只是要使用它自己定义的DatasetProducerQ不能直接用ResultSetQ也是个ȝ事,不过的确是很不错的控件了?/P>
结
1。经q这ơ移植,发现JAVAq是有许多很牛的地方Q采用hashmap来缓存数据,效率的确很不错,只是用得太多Q缺乏管理机Ӟ有点混ؕ了,下一阶段再重构一下,形成一个管理框架最好;
2。eclipse开发的很不错Q与vs ide差别是比较大Q只是用习惯了之后发现其功能强大,而且可以找些plugin来扩展功能,估计我只是看C点皮毛而已?BR>3。在JAVA下开发,使用Javascript太多Q还没找到更好解军_法,水^有限Q?BR>4。与另一个h一起开发,大家的编E风格和代码不够规范Q用了一些重复的cdҎQ这在后期维护是个工作,旉太紧Q项目Lq样Q就没得多少提高了;
个h水^实在有限Q上面只是一面之词,目月底才结束,有什么变更再补充?BR>
Upcoming release promises evolution in testing
隑ֺU别: ?/p> Elliotte Harold (elharo@metalab.unc.edu),
Adjunct Professor, Polytechnic University 2005-9-15 Q译Q?/p> 原文Q?A >http://www-128.ibm.com/developerworks/java/library/j-junit4.html JUnit 是JAVA语言事实上的标准试库。JUnit 4是三q以来最具里E碑意义的一ơ发布。它的新Ҏ主要是针对JAVA5中的标记QannotationQ来化测试,而不是利用子cR反或命名机制。本文将讲述如何使用JUnit 4Q当前前提是你最好具有JUnit的用经验. JUnit, 由Kent Beck ?Erich Gamma开发,几乎是JAVA开发最重要的第三方工具。正如Martin Fowler 所_“在软g开发领域,从来没有如此少的代码vC如此重要的作用“。由于JUnitQJAVA代码变得更健壮,更可靠,BUG也比以前更少。由于JUnit (由Smalltalk's的SUnit得来) 的出玎ͼ随后产生了许多xUnit的测试工P如nUnit (.NET), pyUnit (Python), CppUnit (C++), dUnit (Delphi) 和其它不同^台及语言的测试相关的工具?/p> 虽然JUnit也只是一个工P但其产生的思想和技术却较其架构更意义重大。单元测试,试先行的编E方式,试驱动的开发方式,q必须由JUNIT实现Q也不一定要用SWing实现GUI界面。JUNIT最q的一ơ更新是在三q前Q但它比其它大多数有BUG的框枉要健壮,更重要的是,JAVA一直在改进。现在JAVA支持泛型Q枚举,可变长度参数Q以及标记语aQ开创了开发可重用框架的新局面)?/p> JUnit's的停滞不前得那些想要变革的开发h员换其它试工具Q挑战者有Bill Venners的Artima SuiteRunner和Cedric Beust的TestNGQ这些工具库虽然有值得推荐的功能,但没有Q何一ƄC能与JUNIT相比Q没有Q何一Ƒַ兯其它业界产品如Ant, Maven, Eclipseq泛支持Q因此Beck 和Gamma双开始利用JAVA5的新Ҏ来开发新版的JUNITQ目的是利用JAVA5中的标记Ҏ得单元测试开发更Ҏ。Beck_“JUNIT4的主要目的是通过化JUNIT的用鼓励更多的开发h员写更多的测试”。虽然会与以前的版本兼容Q但JUNIT4与从JUNIT1.0开始的版本相比会有一个非常大的变化. 注意: 修改基本框架是一把双刃剑Q虽然JUNIT4的目的是清晰的,但细节仍有许多不同,因此本文只是一个简单的介绍Qƈ不是最l文档. 以前所有版本的JUNIT都用命名机制和反射来定位测试,下面的代码测?+1= 2Q?/p>
而在JUNIT 4中,试Ҏ?STRONG>@Test 标记说明Q如下:
使用标记的好处是你不用将所有测试方法命名ؓ
下面的代码也同样正确Q?/p>
q种命名机制最大的优点是更适合你的待测试类或方法名Uͼ例如Q你可以使用ListTEst.contains()试
你也可以使用JDK5中的新特?static import)使得跟以前版本一L单:
q种Ҏ试受保护的Ҏ非常ҎQ因Z可以在测试类中承有受保护方法的c.
JUnit 3 ?STRONG>test runners 会在每个试之前自动调用
在JUnit 4中,你仍然可以在每个试前初始化变量和配|环?Q然而,q些操作可以不用在Setup()中完成,你可以在初始化方法前面添?STRONG>@Beforer 来表C,如下Q?
你也可以有多个方法标记有QBeforeQ所有方法都会在每个试之前执行Q?
清除环境与JUNIT3 差不多,在JUNIT3中?
在JUnit 4中,你还可以使用@After标记来说明:
? 最后,你不需要在父类中明调用这些初始化或清除方法.test runner会自动调用这些标记的ҎQ子cM的@BeforeҎ在父cȝ@BeforeҎ之后执行Q这与构造函数的执行序一PQ而@AfterҎ刚好相反Q子cM的@AfterҎ先执行.然而,多个@Before和@AfterҎ的执行顺序就是未知的Q?/p> 试集范围的初始?/STRONG> JUnit 4中引入了一JUNIT3没有的新Ҏ,cȝ别的setUp()和tearDown()Q即在一个类的所有测试前执行初始化,q在所有测试完成后执行清除? 例如Q一个测试类中的每个试都要用到一个数据库q接或网l连接,或其它很耗资源初始化或释攄资源Q用不着在每个测试方法前后进行操作,而只需要在试cd始前后执行即可。下面的CZ是用第三方的库q行错误Q在执行所有测试前错误先重定向到非标准输出,然后在所有测试结束后再输出到需要的地方Q这样就不会影响到测试过E中产生的其它信息?/p>
上面的操作没有必d每个试前后执行。然而要注意的是Q这U方法可能媄响测试间的结果,如果一个测试改变了初始化的对象Q而这个对象可能是其它试的输入,那么试的结果可能不正确Q这U方法将依赖试的顺序ƈ可能引入BUG。当优化试性能Qƈ且当你改q了配置和基准测试后而仍然很慢时Q如数据库连接或|络问题Q你才需要考虑使用q种Ҏ。只有这P你才能每天执行多ơ测试?
异常试是JUNIT4中的最大的改进Q以前异常测试是通过try catch实现Q当抛出异常Ӟ在try的最后添加一条fail()语句实现Q如下:
q种Ҏ不仅隄Q而且造成无论成功或失败,代码覆盖工具都不能执行某些代码.而在JUnit 4中,你可以在要抛出异常的代码中添加标记来声明一个异常是期望的:
如果没有异常抛出Q上面的试则会p|Q如果你想知道异常的详细信息或其它情况,你还是要使用try catch才行
需要忽略的试
也许你有些测试需要很长时间才能执行完成,q是这个测试应该跑得快Q而是它做的很复杂和很慢的工作造成的.如访问远E网l错误,需要很久才能有反馈Q如果你不想让这U测试破坏你整个试q程Q你可能惌q这个测试.当然也有可能某个试出控制范围而失败.如W3C
XInclude试集中自动识别一些JAVA不支持的Unicode代码Qؓ了防止这些测试L通不q,可以使用标记
test runner不会执行q些试Q但会说明这些测试被跌了。在命o行测试界面中Q字母“I”会表示试跌Q或“E”表C测试失败,而不是用点?"表示成功Q?/p>
要注意的是,假设q些试׃某种理由攑֜最开始,如果你以后一直忽略这些测试,那些需要被试的代码可能有问题而不会被到。因此忽略测试只是一个时解x法,q不是一个解决Q何问题的真正办法?
旉试 性能试是单元测试中最头疼的问题,JUnit 4也未完全解决此问题, 你可以在JUNIT4的测试方法中d一个时间参数。如果测试时间超q参敎ͼ则测试失败。如下,如果试旉过0.5U,则此试p|Q?/p>
除基准性能试外,旉试在网l测试方面也很有用.如果一个远端的L或数据当掉或太慢Q你可以跌此测试而不用阻塞在q里Q好的测试集可以在作了一些改动后很快的一遍一遍的执行Q可能一天数十次Q设|一个超时让试更快的执行,下面的示例中如果分析http://www.ibiblio.org/xml 的时间超q2U,则测试失败.
JUnit 4 增加了两上断文方法用于比较数l:
q两个方法采用最直接Ҏ比较Q如果数l长度相同,且每个对应的元素相同Q则比较成功Q否则不成功Q参CؓI的情况也作了考虑Q?
需要补充的地方 JUnit 4是一个非常基本的框架Q还不是以前版本的升U。JUNIT3的开发h员会发现有些功能没有?
没有GUI试界面的确不方便,但其它改变简化了JUNIT的用,从当前JUNIT的操作手册和FAQ的数量就知道Q而JUNIT4的文档将不会需要这么多?
现在JUnit 4q没有发布编译版本,如果想体验版本的乐趣Q则需要从CVS中获取源代码。分支标{是"Version4" (see Resources ).要注意的是大部分文档是根据JUNIT3~写的,q未同步更新。需要Java 5才能~译JUnit 4Q因为大量用了标记Q泛型其其它JDK5中的新特性?
执行试的命令行方式与JUNIT3有点区别Q你现在要?
Beck 和Gamma在努力保持后向和前向兼容性。JUnit 4可以直接q行ҎJUNIT3~写的测试类Q而不用Q何修改,直接各试cȝ全名传递给test runner卛_Qtest runner会根据不同的试c调用不同的试框架版本Q? 后向兼容性有炚w烦,卛_JUNIT3中执行根据JUNIT4写的试c,之所以要q样是因为在一个集成环境如Ecplise中,不需要升U到JUNIT4也可以测试JUNIT4的测试类Q从而避免工具IDE的升U。ؓ了让JUNIT4的测试类在JUNI3中能执行Q你需要一个适配c?CODE>JUnit4TestAdapter装JUNIT3的测试类Q如下代码:
而JAVA斚wQJUNIT4一点兼Ҏ都没有Q因为完全依赖于JDK5的新Ҏ,因此不可能在JAVA1.4上面执行JUNIT4?/p>
q有... JUnit 4q未l束Q还有许多需要补充,如文档,现在不推荐将以前的测试类升到JUNIT4。当然JUNIT4的开发速度很快Q其计划也很快会实现QJAVA1.4的开发h员仍然可以用JUNIT3.8Q而用JAVA5的h员可以考虑是否采用JUNIT4了,因ؓ在特性上更适合?
下蝲试版本
|