??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久午夜视频,在线观看涩涩,中文字幕一区二区在线播放http://www.aygfsteel.com/rocket/走在agile的小路上
zh-cnMon, 04 Aug 2025 16:51:58 GMTMon, 04 Aug 2025 16:51:58 GMT60- 正规军的军规http://www.aygfsteel.com/rocket/archive/2008/12/19/247407.htmlrocketrocketFri, 19 Dec 2008 15:14:00 GMThttp://www.aygfsteel.com/rocket/archive/2008/12/19/247407.htmlhttp://www.aygfsteel.com/rocket/comments/247407.htmlhttp://www.aygfsteel.com/rocket/archive/2008/12/19/247407.html#Feedback0http://www.aygfsteel.com/rocket/comments/commentRss/247407.htmlhttp://www.aygfsteel.com/rocket/services/trackbacks/247407.html

]]> - roller扩展开发经验小l之xmlrpchttp://www.aygfsteel.com/rocket/archive/2008/07/17/215356.htmlrocketrocketWed, 16 Jul 2008 23:23:00 GMThttp://www.aygfsteel.com/rocket/archive/2008/07/17/215356.htmlhttp://www.aygfsteel.com/rocket/comments/215356.htmlhttp://www.aygfsteel.com/rocket/archive/2008/07/17/215356.html#Feedback8http://www.aygfsteel.com/rocket/comments/commentRss/215356.htmlhttp://www.aygfsteel.com/rocket/services/trackbacks/215356.htmld10月ؓ了满一个客L需求,让我开发一个教学博客系l出来,当时考虑节约成本׃用了一个比较优U的开源博客^台来做二ơ开发。这个开源^台就是rollerQ是apache的一个项目,能收录在apache下面说明q是有两把刷子的Qmatrix的部落隔是直接使用的rollerQ而且看到切消息说网易的博客q_也是Zrollerq行开发的?br />
roller地址Qhttp://roller.apache.org/
现在教学博客q_已近开发完成投入用了Q而在q个q程中发Croller实有很多地方值得一个jee开发h员借鉴的地方,所以今天开始打把学到的这些经验进行一下ȝ了。好久没写blog了,前段旉实太忙了,事情太多了。现在打每天挤Ҏ间把q些l验都记录下来,不然我怕日子久了我都忘C?br />
首先先讲的是xmlrpcQrpc的全U是Remote Procedure CallQ实际上是Z让客L可以L的对服务端的一些方法啊Q过E进行调用。xmlrpc其实是一个用xml来实现rpc的规范,使用的传输协议还是我们最熟悉的httpQ不同的是传输的格式是用xml的格式来装数据的,而不是用html了。基于这个规范呢其实是有多种实现的,由php的,有Python的。在q里我要介绍的是roller中所使用的一个实玎ͼ依然是apache下的一个项目Apache XML-RPCQhttp://ws.apache.org/xmlrpc/?br />
在roller中用的是xmlrpc的服务段Q所以下面我先介l服务端和客L的设|以及调用方?br />
1、当然是把Apache XML-RPC的包引入到服务端和客h
客户端引入:xmlrpc-common.jar xmlrpc-client.jar
服务端引入:xmlrpc-common.jar xmlrpc-server.jar
2、用java的实现当然要有一个servlet了,
先介l客LQ遵循http协议Q客L针对一个url发送请?br />
下面是相关代?br />
import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
public class RpcClient {
public static void main(String[] args) throws Exception {
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
XmlRpcClient client = new XmlRpcClient();
try {
config.setServerURL(new URL("http://127.0.0.1:8088/roller-services/xmlrpc"));
} catch (MalformedURLException e) {
e.printStackTrace();
}
config.setBasicUserName("user");
config.setBasicPassword("pwd");
config.setEnabledForExtensions(true);
config.setConnectionTimeout(60 * 1000);
config.setReplyTimeout(60 * 1000);
// set configuration
client.setConfig(config);
}
}
再介l服务端Q服务端自然要有一个servlet来接受这个请求了
在web.xml中配|servlet
<!--XmlRpc servlet-->
<servlet>
<servlet-name>XmlRpcServlet</servlet-name>
<servlet-class>org.apache.xmlrpc.webserver.XmlRpcServlet</servlet-class>
<init-param>
<param-name>enabledForExtensions</param-name>
<param-value>true</param-value>
<description>Sets, whether the servlet supports vendor extensions for XML-RPC.</description>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>XmlRpcServlet</servlet-name>
<url-pattern>/roller-services/xmlrpc</url-pattern>
</servlet-mapping>
q里的配|我使用的是默认的servletQ当然你也可以用自己定义的servlet了,我的需求比较简单,所以就没有再另外定义servlet
3、下面就是客LҎ需求发送自q定的rpch了,比如我需要获取服务端所有的blogList
客户端的调用代码如下Q?br />
try {
Object[] result = (Object[]) client.execute("blogger.getAllblogList",
params);
} catch (Exception e) {
e.printStackTrace();
}
那么服务D又是如何处理这个请求的呢?上面那个servlet会把hҎ不同rpch转发l不同的处理器,不过׃servlet我用的是默认的Q所以分发这个动作是使用配置properties文g来实现的Q这里有个不好的地方要说明的是配|文件必d目?org/apache/xmlrpc/webserver/XmlRpcServlet.properties路径下,q个是Apache XML-RPC做得不好的一个地斏V配|文件内容如?br />
blogger=org.apache.roller.webservices.xmlrpc.BloggerAPIHandler
metaWeblog=org.apache.roller.webservices.xmlrpc.MetaWeblogAPIHandler
当服务端接受C面客L的请求之后,׃Ҏblogger到BloggerAPIHandler去调用getAllblogListq个Ҏ?/p>
4 最后一步就是给客户端回传数据了
q里需要注意的是服务端一般用的是Hashtable来对多个数据q行装Q比如:
Hashtable result = new Hashtable();
result.put("nickname", user.getUserName());
result.put("userid", user.getUserName());
result.put("email", "");
result.put("lastname", lastname);
result.put("firstname", firstname);
return result;
但是客户端在解析的时候取出来的也是一个HashtableQ然后从中取己需要的数据了?br />
HashMap table = (HashMap) obj;
this.nickname = table.get("nickname").toString();
this.userid = table.get("userid").toString();
当然Q最好是做一个专门的解析cLҎ据进行解析了?br />
q里需要补充说明的是,Apache XML-RPC传输的数据类型是一些预先定义好的数据类型,但是同时它也支持用户自定义的数据cdQ?br />
具体可以参见Qhttp://ws.apache.org/xmlrpc/advanced.html

]]>- 不仁义,不仗?/title>http://www.aygfsteel.com/rocket/archive/2008/07/15/215041.htmlrocketrocketTue, 15 Jul 2008 10:48:00 GMThttp://www.aygfsteel.com/rocket/archive/2008/07/15/215041.htmlhttp://www.aygfsteel.com/rocket/comments/215041.htmlhttp://www.aygfsteel.com/rocket/archive/2008/07/15/215041.html#Feedback24http://www.aygfsteel.com/rocket/comments/commentRss/215041.htmlhttp://www.aygfsteel.com/rocket/services/trackbacks/215041.html又一q了Q也q了?6的生日了。毕?q了Q基本上一q一个公司,大大小参与q十几个目了,不知道这一个值得夸耀的经历,q是一个值得愧的经历?br />
自己也知道这样频J变动工作是不对的,作技术的需要一个好的土壤来沉淀自己Q只有沉淀的够深,才能让自己飞的更高?br />
但是当你面对生活的压力,所有曾l的豪言都变成了一个个用来嘲笑自己的笑话,q就是生zȝ力量Q你没得选择?br />
今年Ҏ来说发生了不的事情Q这些事情D我要告别q轻Q告别幼E。更加D我要d我苦心经营一q的team?br />
一q以来自认ؓ对上家公怸敢说做的漂亮Q但是至自己兢兢业业,我所能来做好事情Q也希望能够帮助公司一起强大v来?br />
客观来说Q我的上家公司整体实力一般,属于一个小作坊式的公司Q一׃?0人左叻I开发的占据一般,剩下的是销售和技术支持。当初之所以选择q家公司是面试时感觉到这家公司的技术实力还是不错的Q一个项目有3个七q以上工作经验的工程师)Q而且所做的产品也有一定的市场潜力。进入公司的一q多旉里也实跟,两个老大和一个架构师学习C很多东西。而且两个老大也很信Q我,q一q里让我试了很多agile相关的实c所以直到离开我一直都对两个老大都很感恩的?br />
感恩说完了,下面p一下这个标题的事情了?br />
q位不仁义,不仗义的主角是我们这个部门所谓的执行老怅R之前发生的很多U种我也׃说了Q就说说在我职q个事情上发生的让h生气的事情。在职前,老大和我说要我把一个项目收了再走Q站好最后一班岗也一直是我的一个信条。但是在收尾的这D|间里Q我因ؓ要忙一些私人的事情Q所以不得不l常请事假。问题就是由于这些假引v的。我?7q?月入的公司,?8q?月准备离职。我原本的意思是我想用年假来替我这D|间请的事假,l果得到的答复是必须要工作满08q才能休q假。但是我也没有争执这个事情,我想我在公司q了一q多了,qx加班很多Q有些有记录的,有些没记录的Q最l应该会늂情面把这些事假不计算了。可惜我太高看我们这个自己每天满口仗义的老MQ在没有和我M商量的情况下Q很果断的扣除了?.5天的工资。走的那天因个事情不爽,我就把这个事情抖了出来在全公司说了一遍,l果W二天她q很牛的打电话问我ؓ什么在公司说这个事情,而且q一副很有理的样子找我老大来和我对问有哪天的加班没有给我算。面对这样一个hQ我d无奈Q我之前只是觉得她这么做合理但不合情Q给你卖命这么久了,做事不能q么l情Q想不到她还和我较上劲了。那我还真要M下这个牛角尖呢。我专门L了劳动法Q而且q问了其他两个深圛_司的hr朋友。劳动法中明规定:
2008q??日实施的《职工带薪年休假条例?国务院oW?14?Q?
W二条 机关、团体、企业、事业单位、民办非企业单位、有雇工的个体工商户{单位的职工q箋工作1q以上的Qn受带薪年休假Q以下简U年休假Q。单位应当保证职工n受年休假。职工在q休假期间n受与正常工作期间相同的工资收入?
W三条 职工累计工作已满1q不?0q的Q年休假5天;已满10q不?0q的Q年休假10天;已满20q的Q年休假15天。国家法定休假日、休息日不计入年休假的假期?br />
所以所谓的工作?8q才能休q假的说法是不符合法律的Q所以在q里也算是经验ȝ下来l各位技术高手,我们不能L埋头ȝ技术,q些和自己利益密切相关的法律必须熟悉Q不然就会被不仁义不仗义的hl糊弄了?br />
附:q个事情我不会善|甘休的Q这1.5天我一定要要回来?/p>

]]> - 一个以前没有注意的问题Qjava构造函数的执行序http://www.aygfsteel.com/rocket/archive/2008/05/27/203165.htmlrocketrocketTue, 27 May 2008 03:43:00 GMThttp://www.aygfsteel.com/rocket/archive/2008/05/27/203165.htmlhttp://www.aygfsteel.com/rocket/comments/203165.htmlhttp://www.aygfsteel.com/rocket/archive/2008/05/27/203165.html#Feedback6http://www.aygfsteel.com/rocket/comments/commentRss/203165.htmlhttp://www.aygfsteel.com/rocket/services/trackbacks/203165.html特地做了一些尝试然后把java构造器的执行顺序整理出? 阅读全文

]]> - 一个优良用h事的6个特?- INVEST 模式Q翻译)http://www.aygfsteel.com/rocket/archive/2008/05/26/202981.htmlrocketrocketMon, 26 May 2008 09:09:00 GMThttp://www.aygfsteel.com/rocket/archive/2008/05/26/202981.htmlhttp://www.aygfsteel.com/rocket/comments/202981.htmlhttp://www.aygfsteel.com/rocket/archive/2008/05/26/202981.html#Feedback1http://www.aygfsteel.com/rocket/comments/commentRss/202981.htmlhttp://www.aygfsteel.com/rocket/services/trackbacks/202981.html一直以来有很多人都在问我用例和用户故事I竟有什么区?我想q片文章关于用户故事?个特性就是最好的回答?
原文不是很难,我就手的给译?有翻译不对的地方q请大家及时指正. 阅读全文
]]> - 感慨于我们的技术土?/title>http://www.aygfsteel.com/rocket/archive/2008/05/25/202709.htmlrocketrocketSun, 25 May 2008 05:13:00 GMThttp://www.aygfsteel.com/rocket/archive/2008/05/25/202709.htmlhttp://www.aygfsteel.com/rocket/comments/202709.htmlhttp://www.aygfsteel.com/rocket/archive/2008/05/25/202709.html#Feedback8http://www.aygfsteel.com/rocket/comments/commentRss/202709.htmlhttp://www.aygfsteel.com/rocket/services/trackbacks/202709.html
最大的感触是我们的技术土壤真的很肥沃Q各个社区都有踊跃的参与者,和耐心的解{者。这U踊跃和耐心对我们的技术环境有很好的沉淀作用。只有这U良性的沉淀才能让中国的技术熾攄丽的创新之花?br />
不过同时Q我也发C一些Qw的用心不纯的踊跃参与者,他们来这些社区好像就是ؓ了排名和点击率,所发的大部分文章都是抄袭而来Q而且抄袭q不做{载说明,利用抄袭的效率来换取名气Q然后利用名气开始笼lh气,W络人气的最l目的是ZL可以l自己带来利益的目和点子,此等用心叉|之h也真难ؓ他来做技术了?br />
我只希望来技术社区的朋友们都是保持自qU,我们来这里是Z学习Q讨论,分n的。中国的技术需要的是脚t实地踏t实实,一步一个脚印。你可以发表不是很成熟的观点Q若是不完整大家可以补充Q若是错误的大家可以帮你U正Q但是你要是是天天看别人的文章然后一字不改的copyq来赚眼球,那么恕我直言Q你在浪Ҏ们的互联|资源。哪怕你把对方的文章重新整理一下,加上自己的实际见解这都是会让我们竖v大拇指的Q因Z在这个知识的传递过E中创造了价倹{?br />
最后,我觉得我们所有做技术的人都应该再次真诚的感谢我们技术社区的原创作家Q有了大家中国的技术才能踏t实实越飞越高?

]]> - 敏捷目理之探索阶D做?/title>http://www.aygfsteel.com/rocket/archive/2008/05/25/202706.htmlrocketrocketSun, 25 May 2008 04:28:00 GMThttp://www.aygfsteel.com/rocket/archive/2008/05/25/202706.htmlhttp://www.aygfsteel.com/rocket/comments/202706.htmlhttp://www.aygfsteel.com/rocket/archive/2008/05/25/202706.html#Feedback2http://www.aygfsteel.com/rocket/comments/commentRss/202706.htmlhttp://www.aygfsteel.com/rocket/services/trackbacks/202706.html阅读全文

]]> - 敏捷目理之推阶D做?http://www.aygfsteel.com/rocket/archive/2008/05/24/202534.htmlrocketrocketSat, 24 May 2008 01:08:00 GMThttp://www.aygfsteel.com/rocket/archive/2008/05/24/202534.htmlhttp://www.aygfsteel.com/rocket/comments/202534.htmlhttp://www.aygfsteel.com/rocket/archive/2008/05/24/202534.html#Feedback0http://www.aygfsteel.com/rocket/comments/commentRss/202534.htmlhttp://www.aygfsteel.com/rocket/services/trackbacks/202534.html阅读全文

]]> - 敏捷目理之构想阶D做?/title>http://www.aygfsteel.com/rocket/archive/2008/05/23/202353.htmlrocketrocketFri, 23 May 2008 03:32:00 GMThttp://www.aygfsteel.com/rocket/archive/2008/05/23/202353.htmlhttp://www.aygfsteel.com/rocket/comments/202353.htmlhttp://www.aygfsteel.com/rocket/archive/2008/05/23/202353.html#Feedback0http://www.aygfsteel.com/rocket/comments/commentRss/202353.htmlhttp://www.aygfsteel.com/rocket/services/trackbacks/202353.html阅读全文

]]> - DEV2DEV TECHDAYS SOA 体会?/title>http://www.aygfsteel.com/rocket/archive/2008/05/22/202279.htmlrocketrocketThu, 22 May 2008 14:52:00 GMThttp://www.aygfsteel.com/rocket/archive/2008/05/22/202279.htmlhttp://www.aygfsteel.com/rocket/comments/202279.htmlhttp://www.aygfsteel.com/rocket/archive/2008/05/22/202279.html#Feedback0http://www.aygfsteel.com/rocket/comments/commentRss/202279.htmlhttp://www.aygfsteel.com/rocket/services/trackbacks/202279.html面向服务?个原?br />
服务可复?不管是否存在x复用的机会,服务被设计ؓ支持潜在可复用?br />
服务׃n一个正式契U?Z与服务交互,只需要共享描q每个服务信息交换术语定义的正式契约?br />
服务是松散耦合?服务被设计ؓ无需紧密的、跨服务的依赖而交互?br />
服务是底层逻辑的抽?只有l由服务契约所暴露的部分服务对于外部世界是可见的。契U之外所表达的底层逻辑是不可见的,且与服务h者无兟?br />
服务是可l合?服务可能l合其他服务。这允许表示不同_度的逻辑Qƈ促进复用及抽象层的创建?br />
服务是自ȝ 逻辑由服务所控制Qƈ位于一个清晰的边界内。服务已l在q个边界内被控制Qƈ且不依赖于执行其控制的其他服务?br />
服务是无状态的 服务应当不需要管理状态信息,因此能够其维持松耦合性。服务应当尽可能设计成无状态的Q即便这意味着要将状态管理移臛_处?br />
服务是可发现?服务应当允许其描q被发现Qƈ被h工和可能会利用其逻辑的服务请求者所理解?br />
q个8个面向服务的原则乍看很像我们熟悉的OOP啊,不过如果你把一个服务抽象成一个对象来看的话也׃隄解了?br />
下面介绍一下依据这8个原则构建的SOA的各个服务层Q?
1、连通性服务层
所谓的q通性是指对于原有系l的数据q通,׃原有pȝ不能提供一个具有通用性的数据服务Q所以在q通性服务层的主要Q务就是负责把原来已有的JDBC的,EJB的,webService的各U数据服务,装成具有统一标准的java pojo控gQ然后其它的可以方便,单的实现Ҏ据服务的调用?br />
q通性服务层Q?br />
服务对象Q需要获得数据的对象 如业务层、表C层{?br />
提供服务Q可以操作原有系l的数据?nbsp; 如对一个sap服务器进行操作、对一个DB服务器进行操作邓
调用资源Q原有系l的数据服务接口 如EJB、HibernateQJDBC{?br />
?Q?img height="326" alt="" src="http://www.aygfsteel.com/images/blogjava_net/rocket/ConnectService.png" width="425" border="0" />
在这里值得一提的是bea在用workshop对于q通性服务层创徏Q非常简单,完全囑Ş化的方式Q只需单的鼠标拖曳Q就可以实现服务控g的徏立?br />
2、业务流E服务层
我们知道一般的业务pȝ都会有一些自q业务程的,那么如何让这些原有的业务程来提供给SOApȝ使用呢?
在bea专家l我们演C的demo中,我看到bea的做法是把每一个流E节点封装成了服务,q样Q这些流E节Ҏ个都可以成ؓ一个向外提供服务的服务者了?br />
业务程服务层:
服务对象Q需要流E控制的对象 如其他业务层Q表C层{?br />
提供服务Q业务流E控?nbsp; 如从a入口q入后是应该去b节点q是应该去c节点
调用资源Q通常是连通性服务层的服?nbsp;
?Q?img alt="" src="http://www.aygfsteel.com/images/blogjava_net/rocket/BusinessBus.png" border="0" />
在bea演示的时候对于业务流E服务层的构Z焉用的是图形化的方式,q里值得U道的是在用图形化的过E中Qbea的工兯可以支持对于服务的格式{?br />
3、服务中介层
上面已经介绍了两U服务层了,在soa中这两层的调用不是简单的上下层关pR在实际目中,也许有的需求是需要流E控制的Q但是也许有些需求是直接要求展示数据的,那么如何处理q两U的需求呢。这里就是在soa中最重要的一个层了,服务中介层。很多h应该听过soa中service busq个概念。我之前一直理解ؓ服务ȝ仅仅是ؓ客户端提供服务的Q其实是不对的,实际上服务ȝ是一个用了穿h各个服务层的Q就好比是一个糖葫芦Q服务中介层是中间的那Ҏ子?br />
?Q?img height="338" alt="" src="http://www.aygfsteel.com/images/blogjava_net/rocket/serviceBus.png" width="725" border="0" />
做ؓ服务中介层来_主要有两U服务,一U是应用服务Q另外一个是代理服务Q用来对应用服务q行代理装的,是服务ȝ中向外暴露的服务?br />
4、表C层服务?br />
表示层服务主要和不同的客L有关Qbea在这里的讲述中由于时间紧张所以比较简单。重点还是在演示他们可视化得面~辑。但是这里有点给我洗脑得是Q对于不同的客户端所提供的服务是直接可以使用的,比如判断一个用户名是否合法Q表C层服务不是q回的trueQfalseQ而是直接q回Q?#8220;该用户名可用”Q?#8220;该用户名已被占用”q样的字W串?br />
关于表示层我׃再画图了Q最后是一个整体的soa层次l构图:


]]>
վ֩ģ壺
ɽ|
˳|
|
̨|
|
ɽ|
̶|
Ƽ|
|
ͩ|
|
ƽ|
|
ں|
ԭ|
|
̨|
|
|
|
|
ĵ|
״|
ɽ|
|
|
ɽ|
ɽ|
|
|
|
˳|
|
˺|
|
͡|
|
|
ͤ|
ˮ|
|