﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-书山有路勤为径，学海无涯苦作舟</title><link>http://www.blogjava.net/fanlei77/</link><description>天道酬勤</description><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 20:47:55 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 20:47:55 GMT</pubDate><ttl>60</ttl><item><title>Lotus Expeditor v6.1的世界(四)  一切都是OSGi</title><link>http://www.blogjava.net/fanlei77/archive/2008/01/15/175450.html</link><dc:creator>EricFan</dc:creator><author>EricFan</author><pubDate>Tue, 15 Jan 2008 05:32:00 GMT</pubDate><guid>http://www.blogjava.net/fanlei77/archive/2008/01/15/175450.html</guid><wfw:comment>http://www.blogjava.net/fanlei77/comments/175450.html</wfw:comment><comments>http://www.blogjava.net/fanlei77/archive/2008/01/15/175450.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanlei77/comments/commentRss/175450.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanlei77/services/trackbacks/175450.html</trackback:ping><description><![CDATA[&nbsp;
<p style="tab-stops: 35.35pt"><span style="font-family: 宋体">前面已经介绍过一些</span>OSGi<span style="font-family: 宋体">的东西，不过说实话，我自己还是一头雾水，不过我也清晰的认识到，</span>Lotus Expeditor Client<span style="font-family: 宋体">的基础就是</span>OSGi,<span style="font-family: 宋体">基于</span>OSGi,<span style="font-family: 宋体">你可以整合更多的框架，所以，我们一起来学习</span>OSGi<span style="font-family: 宋体">吧，基础打牢了，我们的大厦就会盖得越高。</span></p>
<p style="tab-stops: 35.35pt"><span style="font-family: 宋体">这里给出一些学习</span>OSGi<span style="font-family: 宋体">的资料，</span>OK,<span style="font-family: 宋体">五天以后见了，一起来学习吧，哈哈。</span></p>
<p style="tab-stops: 35.35pt"><span style="font-family: 宋体">比较好的中文学习资料：</span><a href="http://www.javaeye.com/topic/22071">http://www.javaeye.com/topic/22071</a></p>
<p style="tab-stops: 35.35pt"><span style="font-family: 宋体">比较好的英文学习资料：</span><a href="http://neilbartlett.name/blog/osgi-articles/">http://neilbartlett.name/blog/osgi-articles/</a></p>
<p style="tab-stops: 35.35pt">DW<span style="font-family: 宋体">上的文章搜索：</span>http://www-128.ibm.com/developerworks/search/searchResults.jsp?searchType=1&amp;searchSite=dWChina&amp;pageLang=zh&amp;langEncoding=UTF8&amp;searchScope=dW&amp;query=osgi&amp;Search.x=26&amp;Search.y=5<br />
<br />
重点推荐OSGi大牛的blog：<a href="http://www.blogjava.net/bluedavy">http://www.blogjava.net/bluedavy</a>，看的我如痴如醉啊，哈哈<br />
</p>
<img src ="http://www.blogjava.net/fanlei77/aggbug/175450.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanlei77/" target="_blank">EricFan</a> 2008-01-15 13:32 <a href="http://www.blogjava.net/fanlei77/archive/2008/01/15/175450.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Lotus Expeditor v6.1的世界(三) 还是Hello World吧</title><link>http://www.blogjava.net/fanlei77/archive/2008/01/14/175240.html</link><dc:creator>EricFan</dc:creator><author>EricFan</author><pubDate>Mon, 14 Jan 2008 08:16:00 GMT</pubDate><guid>http://www.blogjava.net/fanlei77/archive/2008/01/14/175240.html</guid><wfw:comment>http://www.blogjava.net/fanlei77/comments/175240.html</wfw:comment><comments>http://www.blogjava.net/fanlei77/archive/2008/01/14/175240.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanlei77/comments/commentRss/175240.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanlei77/services/trackbacks/175240.html</trackback:ping><description><![CDATA[&nbsp;
<p><span style="font-family: 宋体">也许每本编程书籍都已</span>Hello World<span style="font-family: 宋体">为开头不是没有原因的，因为</span>Hello World<span style="font-family: 宋体">以浅显的编程技巧可以迅速地让开发者上手，所以，我决定还是落入俗套吧，这次我们来讲如何实现一个</span>Hello World<span style="font-family: 宋体">。</span></p>
<p><span style="font-family: 宋体">由于我是利用</span>Java<span style="font-family: 宋体">做</span>web<span style="font-family: 宋体">方面的东西，所以我们先学习一下如何开发一个</span>web application<span style="font-family: 宋体">。</span></p>
<p><span style="font-family: 宋体">先从理论上武装一下自己，理解普通的</span>web application<span style="font-family: 宋体">和</span>Lotus Expeditor <span style="font-family: 宋体">的</span> web application<span style="font-family: 宋体">有什么区别。</span><span style="font-family: 宋体">定位于</span>Lotus Expeditor<span style="font-family: 宋体">平台的</span>Web Application<span style="font-family: 宋体">称为</span>Client Services web application<span style="font-family: 宋体">。</span><span style="font-family: 宋体">因为</span>Lotus Expeditor<span style="font-family: 宋体">平台的组件被称为</span>bundles,<span style="font-family: 宋体">所以一个定位于此平台的</span>Web Application<span style="font-family: 宋体">也被称为一个</span>Web Application Bundle<span style="font-family: 宋体">或者</span>WAB<span style="font-family: 宋体">。</span>Client Services web application <span style="font-family: 宋体">和运行在</span> WAS(Websphere Application Server) <span style="font-family: 宋体">或者</span> tomcat <span style="font-family: 宋体">下的</span> web application<span style="font-family: 宋体">一个主要的不同就是</span>Client Services web application<span style="font-family: 宋体">必须也是一个有效的</span>OSGI Bundle<span style="font-family: 宋体">。那么什么是</span>OSGI<span style="font-family: 宋体">呢？这个就说来话长了，等我们羽翼丰满了以后，在具体讨论这个问题吧，我们还是先实现一个</span><span style="font-family: 宋体">定位于</span>Lotus Expeditor<span style="font-family: 宋体">平台的</span>Web Application<span style="font-family: 宋体">。</span></p>
<p><span style="font-family: 宋体">首先需要创建一个</span>Web application,<span style="font-family: 宋体">打开</span>eclipse,File-New-Project, <span style="font-family: 宋体">选择</span>Client Services Web <span style="font-family: 宋体">项目，如下图：</span></p>
<img height="562" alt="" src="http://www.blogjava.net/images/blogjava_net/fanlei77/3-1.JPG" width="618" border="0" />&nbsp;<br />
&nbsp;
<p><span style="font-family: 宋体">我们把这个工程叫做</span> HelloWorld <span style="font-family: 宋体">吧，如下图：<br />
<img height="562" alt="" src="http://www.blogjava.net/images/blogjava_net/fanlei77/3-2.JPG" width="620" border="0" /><br />
<br />
&nbsp; </p>
<p><span style="font-family: 宋体">然后一路</span>Next,<span style="font-family: 宋体">直到如下页面：<br />
<br />
<img height="561" alt="" src="http://www.blogjava.net/images/blogjava_net/fanlei77/3-3.JPG" width="619" border="0" /><br />
<br />
&nbsp; </p>
<p><span style="font-family: 宋体">我们看看一个普通的</span>Lotus Expeditor<span style="font-family: 宋体">的</span>web application<span style="font-family: 宋体">都用到了哪些包，有</span>Apache MyFaces(org.apache.myfaces) <span style="font-family: 宋体">，</span>Eclipse<span style="font-family: 宋体">核心组件</span>(com.ibm.jxesupport.initializer,org.eclipse.core.contenttype,org.eclipse.core.jobs,org.eclipse.core.runtime,org.eclipse.equinox.common,org.eclipse.equinox.event,org.eclipse.equinox.preferences,org.eclipse.equinox.registry,org.eclipse.osgi,org.eclipse.osgi.services,org.eclipse.osgi.util)<span style="font-family: 宋体">，</span>IBM JavaServer Faces(JSF)<span style="font-family: 宋体">扩展</span>(com.ibm.rcp.servlet.jsf.ext,com.ibm.rcp.servlet.jsf.ext.impl)<span style="font-family: 宋体">，</span>JavaServer Pages(JSP) API(com.ibm.pvc.servlet.jsp)<span style="font-family: 宋体">，</span>JavaServer <span style="font-family: 宋体">面窗口小部件库</span>(JWL)(com.ibm.rcp.servlet.jwl)<span style="font-family: 宋体">，</span>JSP<span style="font-family: 宋体">标准标记库</span>(JSTL)(com.ibm.pvc.servlet.jsp.jstl)<span style="font-family: 宋体">，</span>Servlet API(com.ibm.pvc.servlet)<span style="font-family: 宋体">，</span>Web Application<span style="font-family: 宋体">服务</span>(org.osgi.service.webapplication)<span style="font-family: 宋体">，</span>Web Application<span style="font-family: 宋体">兼容性</span>(com.ibm.osg.servlet,com.ibm.osg.webapp)<span style="font-family: 宋体">，</span>Web Container(com.ibm.pvc.webcontainer) <span style="font-family: 宋体">，</span>Web<span style="font-family: 宋体">容器</span>-JSP<span style="font-family: 宋体">编译器网桥，可靠性，可用性和可维护性</span>(RAS)(com.ibm.pvc.ras)<span style="font-family: 宋体">，这些组件都是干什么用的呢？说实话，我也一头雾水，先暂时不管，我们点击</span>Finish<span style="font-family: 宋体">完成工程的创建。</span></p>
<p><span style="font-family: 宋体">让我们看看新建的工程和普通的</span>Web Application<span style="font-family: 宋体">的目录结构有什么不同，如下图：<br />
<br />
<img height="326" alt="" src="http://www.blogjava.net/images/blogjava_net/fanlei77/3-4.JPG" width="324" border="0" /><br />
&nbsp; </p>
<p>Lotus Expeditor<span style="font-family: 宋体">的</span>Web Application<span style="font-family: 宋体">相比普通的</span>Web Application<span style="font-family: 宋体">在整体结构上基本是没有什么区别的，主要是多出了</span>plugin.xml<span style="font-family: 宋体">和</span>META-INF/MANIFEST.MF<span style="font-family: 宋体">两个文件。我按照我目前的理解先说说这两个文件，说之前就不得不提到</span>OSGI<span style="font-family: 宋体">了，其实我很早就听说了</span>OSGI,<span style="font-family: 宋体">也对它的架构和设计思想有一些了解，只不过从来没有自己动手实践过，所以也是一知半解，只知道个概念而已。好，我们下面就说说</span>OSGI</p>
<p>OSGI Bundle<span style="font-family: 宋体">概述</span></p>
<p>Bundles<span style="font-family: 宋体">是含有包含特定头信息的</span>manifest<span style="font-family: 宋体">的</span>jar<span style="font-family: 宋体">文件</span>,<span style="font-family: 宋体">这些头信息描述了</span>bundle<span style="font-family: 宋体">并且列出了</span>bundle<span style="font-family: 宋体">的依赖性，比如说</span>bundle<span style="font-family: 宋体">需要的包和服务。</span>Manifest<span style="font-family: 宋体">文件中的描述信息将</span>bundle<span style="font-family: 宋体">和其他的</span>jar<span style="font-family: 宋体">文件区分开。非</span>bundle<span style="font-family: 宋体">的</span>jar<span style="font-family: 宋体">文件的</span>manifest<span style="font-family: 宋体">文件常常包含了好少的信息。但是，</span>bundle<span style="font-family: 宋体">的</span>manifest<span style="font-family: 宋体">文件通常包含了描述信息，比如说</span>bundle<span style="font-family: 宋体">的名字，版本以及此</span>bundle<span style="font-family: 宋体">需要的包和服务的列表。</span></p>
<p><span style="font-family: 宋体">框架管理</span>bundle<span style="font-family: 宋体">的生命周期，</span>bundle<span style="font-family: 宋体">的生命周期分为：</span></p>
<p>INSTALLED-bundle<span style="font-family: 宋体">已经安装，但是该</span>bundle<span style="font-family: 宋体">的依赖性还没有被完全解决。</span></p>
<p>RESOLVED-bundle<span style="font-family: 宋体">的状态是</span>installed,<span style="font-family: 宋体">并且已经解决了依赖性问题，但是该</span>bundle<span style="font-family: 宋体">并没有被运行。</span><span style="font-family: 宋体">如果一个</span>bundle<span style="font-family: 宋体">已经启动，并且所有的依赖性问题已经解决，那么该</span>bundle<span style="font-family: 宋体">就会跳过</span>RESOLVED<span style="font-family: 宋体">状态。</span></p>
<p>STARTING-bundle<span style="font-family: 宋体">正式运行的一个临时状态</span></p>
<p>ACTIVE-bundle<span style="font-family: 宋体">正在运行</span></p>
<p>STOPPING-bundle<span style="font-family: 宋体">的另一个临时状态</span></p>
<p>UNINSTALLED-bundle<span style="font-family: 宋体">不再存在于框架中</span></p>
<p><span style="font-family: 宋体">每个</span>bundle<span style="font-family: 宋体">都必须包含一个</span>manifest<span style="font-family: 宋体">文件。</span>Bundle<span style="font-family: 宋体">的</span>manifest<span style="font-family: 宋体">文件包含框架需要正确安装的数据和激活的</span>bundle<span style="font-family: 宋体">。</span>Legacy Eclipse bundles <span style="font-family: 宋体">能够在</span>plugin.xml<span style="font-family: 宋体">文件中提供一些</span>manifest<span style="font-family: 宋体">的信息，但是我们建议使用</span>META-INF/MANIFEST.MF<span style="font-family: 宋体">文件来记录</span>manifeset<span style="font-family: 宋体">信息。</span></p>
<p><span style="font-family: 宋体">注意：</span>plugin.xml<span style="font-family: 宋体">可以包含类似的信息，但是，</span>plugin.xml<span style="font-family: 宋体">也包含了扩展和扩展点。</span></p>
<p><span style="font-family: 宋体">如果一个</span>bundle<span style="font-family: 宋体">仅仅包含了一个</span>plugin.xml,Eclipse<span style="font-family: 宋体">平台在启动时将生成一个等价的</span>manifest.mf<span style="font-family: 宋体">。当你在</span>manifest<span style="font-family: 宋体">文件中指定数据的时候，你必须使用</span>OSGI<span style="font-family: 宋体">标准中定义的文件头。你可以使用用户定义的文件头，但是，框架将会忽略任何它不能够理解的文件头。</span></p>
<p>MANIFEST.MF<span style="font-family: 宋体">文件位于</span>bundle<span style="font-family: 宋体">工程的</span>META-INF<span style="font-family: 宋体">目录下。</span>Plugin.xml<span style="font-family: 宋体">文件位于根目录下。</span></p>
<p><span style="font-family: 宋体">上面说了这么多，总体意思就是说</span>MANIFEST.MF<span style="font-family: 宋体">是区分普通</span>Web Application<span style="font-family: 宋体">和</span>OSGI Bundle<span style="font-family: 宋体">的标志，而一个</span>Client Services web application<span style="font-family: 宋体">就需要含有一个plugin.xml。</span><span style="font-family: 宋体">下面列出了</span>Client Services web application<span style="font-family: 宋体">和标准的</span>web application<span style="font-family: 宋体">的不同之处：</span></p>
<p style="margin: 0cm 0cm 0pt 12pt; text-indent: -12pt">1<span style="font-family: 宋体">，</span>The Lotus Expeditor platform <span style="font-family: 宋体">不支持通过EAR部署Enterprise Application。Web Application是被直接部署到运行时的（后面这句话不太理解。。。）</span></p>
<p style="margin: 0cm 0cm 0pt 12pt; text-indent: -12pt">2<span style="font-family: 宋体">，</span>Client Services web application<span style="font-family: 宋体">有一个</span>manifest<span style="font-family: 宋体">文件</span>, <span style="font-family: 宋体">位于</span>META-INF/MANIFEST.MF, <span style="font-family: 宋体">它包含了引用包的信息以及bundel依赖性的信息。</span></p>
<p style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; tab-stops: list 18.0pt">3，Client Services web application <span style="font-family: 宋体">有一个包含了扩展点的</span> plugin.xml<span style="font-family: 宋体">文件，利用这个文件可以简单地启动Web application。</span></p>
<p style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; tab-stops: list 18.0pt">4，Client Services web application <span style="font-family: 宋体">含有记录了额外部署信息的</span>wab.properties<span style="font-family: 宋体">文件。</span> <span style="font-family: 宋体">这个文件位于</span> Webcontent /WEB-INF<span style="font-family: 宋体">文件夹。</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt left 35.35pt">5，JSP<span style="font-family: 'Lucida Sans Unicode'">文件在作为</span>WAB<span style="font-family: 'Lucida Sans Unicode'">部署到运行时前被编译成相对应的</span>Servlet<span style="font-family: 宋体">。</span></p>
<p style="tab-stops: 35.35pt"><span style="font-family: 宋体">我们只是从理论的高度看了一下</span>Client Services Web Application<span style="font-family: 宋体">，是不是有点恐高？没关系，让我们具体实践一下。在</span>WebContent<span style="font-family: 宋体">文件夹下创建</span>index.jsp,<span style="font-family: 宋体">如下图：</span></p>
<br />
<img height="88" alt="" src="http://www.blogjava.net/images/blogjava_net/fanlei77/3-5.JPG" width="155" border="0" /><br />
&nbsp;
<p style="tab-stops: 35.35pt">JSP<span style="font-family: 宋体">源代码如下：</span></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_2_97_Open_Image" style="display: inline" onclick="this.style.display='none'; Codehighlighter1_2_97_Open_Text.style.display='none'; Codehighlighter1_2_97_Closed_Image.style.display='inline'; Codehighlighter1_2_97_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_2_97_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2_97_Closed_Text.style.display='none'; Codehighlighter1_2_97_Open_Image.style.display='inline'; Codehighlighter1_2_97_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #000000; background-color: #ffff00">&lt;%</span><span id="Codehighlighter1_2_97_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_2_97_Open_Text" style="display: inline"><span style="color: #000000; background-color: #f5f5f5">@&nbsp;page&nbsp;language</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">java</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;contentType</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">text/html;&nbsp;charset=ISO-8859-1</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;pageEncoding</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">ISO-8859-1</span><span style="color: #000000; background-color: #f5f5f5">"</span></span><span style="color: #000000; background-color: #ffff00">%&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;HTML&nbsp;4.01&nbsp;Transitional//EN"&nbsp;"http://www.w3.org/TR/html4/loose.dtd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">meta&nbsp;</span><span style="color: #ff0000">http-equiv</span><span style="color: #0000ff">="Content-Type"</span><span style="color: #ff0000">&nbsp;content</span><span style="color: #0000ff">="text/html;&nbsp;charset=ISO-8859-1"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">HelloWorld</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />HelloWorld<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
&nbsp;
<p style="tab-stops: 35.35pt">JSP<span style="font-family: 宋体">文件已经创建好，先在服务器上运行看看效果如何？右键点击</span>HelloWorld<span style="font-family: 宋体">工程，</span>Run As-Run on Server,<span style="font-family: 宋体">选择刚才</span>Client Services v6.1,<span style="font-family: 宋体">直接</span>finish<span style="font-family: 宋体">就可以了。</span></p>
<p style="tab-stops: 35.35pt"><span style="font-family: 宋体">在弹出的</span>Lotus Expeditor Client<span style="font-family: 宋体">的编辑窗口中点击打开菜单，我们看到菜单项并没有发生什么变化，如下图：</span></p>
<img height="185" alt="" src="http://www.blogjava.net/images/blogjava_net/fanlei77/3-6.JPG" width="252" border="0" /><br />
&nbsp;
<p style="tab-stops: 35.35pt"><span style="font-family: 宋体">回到</span>Eclipse<span style="font-family: 宋体">，我们发现</span>Eclipse<span style="font-family: 宋体">打开了我们刚才创建的</span>index.jsp,<span style="font-family: 宋体">如下图：</span></p>
<img alt="" src="http://www.blogjava.net/images/blogjava_net/fanlei77/3-7.JPG" border="0" /><br />
&nbsp;
<p style="tab-stops: 35.35pt"><span style="font-family: 宋体">说明</span>index.jsp<span style="font-family: 宋体">创建成功了，我们还需要将这个</span>HelloWorld<span style="font-family: 宋体">添加到</span>Lotus Expeditor<span style="font-family: 宋体">的菜单项中。那么我们到底应该怎么做呢？前面说过了，</span>Client Services web application<span style="font-family: 宋体">区别于其他</span>Web Application<span style="font-family: 宋体">就是</span>plugin.xml<span style="font-family: 宋体">文件。打开这个文件看看吧，如下图：<br />
</span></p>
<img alt="" src="http://www.blogjava.net/images/blogjava_net/fanlei77/3-8.JPG" border="0" /><br />
<br />
&nbsp;
<p style="tab-stops: 35.35pt"><span style="font-family: 宋体">这段代码的含义就是将我们的</span>HelloWorld<span style="font-family: 宋体">注册到</span>Client Service<span style="font-family: 宋体">中，这样我们可以就可以在</span>Client Server<span style="font-family: 宋体">启动时访问到</span>HelloWorld<span style="font-family: 宋体">工程了。那么具体怎么在</span>Lotus Expeditor Client<span style="font-family: 宋体">的菜单项中添加我们的工程呢？</span></p>
&nbsp;
<p style="tab-stops: 35.35pt"><span style="font-family: 宋体">扩充如下代码，最终</span>plugin.xml<span style="font-family: 宋体">文件如下：</span></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">plugin</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">extension&nbsp;</span><span style="color: #ff0000">point</span><span style="color: #0000ff">="com.ibm.pvc.webcontainer.application"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">contextRoot</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/HelloWorld</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">contextRoot</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">contentLocation</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">WebContent</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">contentLocation</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">extension</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">extension&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="helloworld"</span><span style="color: #ff0000">&nbsp;point</span><span style="color: #0000ff">="com.ibm.eswe.workbench.WctWebApplication"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">WEBApplication&nbsp;</span><span style="color: #ff0000">DisplayName</span><span style="color: #0000ff">="你好"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">WebApplicationUrl&nbsp;</span><span style="color: #ff0000">local</span><span style="color: #0000ff">="true"</span><span style="color: #ff0000">&nbsp;secured</span><span style="color: #0000ff">="false"</span><span style="color: #ff0000">&nbsp;url</span><span style="color: #0000ff">="/HelloWorld"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">WEBApplication</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">extension</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">plugin</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
&nbsp;
<p style="tab-stops: 35.35pt"><span style="font-family: 宋体">我们再重新运行</span>Hello World<span style="font-family: 宋体">工程，看一看</span>Lotus Expeditor Client<span style="font-family: 宋体">的菜单项，是不是多出来了&#8220;你好&#8221;菜单？如下图：</span></p>
<img alt="" src="http://www.blogjava.net/images/blogjava_net/fanlei77/3-9.JPG" border="0" /><br />
<br />
&nbsp;
<p><span style="font-family: 宋体">注意：</span><span style="font-size: 10pt; color: navy; font-family: 'Courier New'">&lt;contextRoot&gt;</span><span style="font-size: 10pt; font-family: 'Courier New'">/HelloWorld</span><span style="font-size: 10pt; color: navy; font-family: 'Courier New'">&lt;/contextRoot&gt;</span><span style="font-size: 10pt; color: navy; font-family: 宋体">与</span><span style="font-size: 10pt; color: navy; font-family: 'Courier New'">url=</span><span style="font-size: 10pt; color: green; font-family: 'Courier New'">"/HelloWorld"</span><span style="font-size: 10pt; color: navy; font-family: 'Courier New'">/</span><span style="font-size: 10pt; color: navy; font-family: 宋体">一定要对应。</span></p>
<p style="tab-stops: 35.35pt"><span style="font-family: 宋体">我们的简单东西到这里就全部介绍完了，下次来点高级的东西，我也是边学边写，哈哈。</span></p>
<br />
</span></span></span>
<img src ="http://www.blogjava.net/fanlei77/aggbug/175240.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanlei77/" target="_blank">EricFan</a> 2008-01-14 16:16 <a href="http://www.blogjava.net/fanlei77/archive/2008/01/14/175240.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Lotus Expeditor v6.1的世界(二)-导入示例程序</title><link>http://www.blogjava.net/fanlei77/archive/2008/01/13/174991.html</link><dc:creator>EricFan</dc:creator><author>EricFan</author><pubDate>Sun, 13 Jan 2008 08:33:00 GMT</pubDate><guid>http://www.blogjava.net/fanlei77/archive/2008/01/13/174991.html</guid><wfw:comment>http://www.blogjava.net/fanlei77/comments/174991.html</wfw:comment><comments>http://www.blogjava.net/fanlei77/archive/2008/01/13/174991.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanlei77/comments/commentRss/174991.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanlei77/services/trackbacks/174991.html</trackback:ping><description><![CDATA[很久没有更新了，其实是有时间，没有什么客观原因，有的只是主观原因的懒，又要进入开发的阶段了，而且这次的重点还将是Lotus Expeditor,所以最近会更新的比较频繁，哈哈，一起来学习吧。<br />
&nbsp;
<p><span style="font-family: 宋体">我们已经完成了</span>Lotus Expeditor Client<span style="font-family: 宋体">的安装，下一步需要进行实际的开发了。</span></p>
<p><span style="font-family: 宋体">我不想按照惯例搞一个</span>HelloWorld<span style="font-family: 宋体">出来，因为我拥有程序员的三个优点：懒惰，急躁和傲慢，哈哈，所以，我决定找一找有没有什么现成的东西可以直接拿来利用的。</span></p>
<p><span style="font-family: 宋体">让我们看一看，点击</span>Help-Welcome,<span style="font-family: 宋体">如下图：</span></p>
<img alt="" src="http://www.blogjava.net/images/blogjava_net/fanlei77/2-1.JPG" border="0" /><br />
<br />
&nbsp;
<p><span style="font-family: 宋体">恩，我觉得地球仪的图标很好看啊（小时候是个地理迷），我决定点地球仪看看里面有什么东西。瞧瞧我们发现了什么？哦，这不正是我们现在迫切需要的东西吗？</span></p>
<img alt="" src="http://www.blogjava.net/images/blogjava_net/fanlei77/2-2.JPG" border="0" /><br />
<br />
&nbsp;&nbsp;&nbsp;
<p style="margin-bottom: 0cm"><font face="宋体, SimSun">让我们点击</font><font face="Times New Roman, serif">Lotus Expeditor Toolkit</font><font face="宋体, SimSun">简介进去一窥究竟，弹出一个帮助菜单，全英文，看起来挺唬人的。<br />
</font></p>
<p style="margin-bottom: 0cm"><img height="636" alt="" src="http://www.blogjava.net/images/blogjava_net/fanlei77/2-3.JPG" width="1022" border="0" /><br />
&nbsp; </p>
<p style="margin-bottom: 0cm"><font face="宋体, SimSun">好吧，你被打败了，我会点英文，哈哈，我不紧不慢地打开</font><font face="Times New Roman, serif">Product overview,</font><font face="宋体, SimSun">我的眼前一亮，</font><font face="Times New Roman, serif">using samples?</font><font face="宋体, SimSun">多么爽啊。来来，让我们打开</font><font face="Times New Roman, serif">Installing samples using Eclipse</font><font face="宋体, SimSun">看看里面都有些什么</font><font face="Times New Roman, serif">sample</font><font face="宋体, SimSun">啊。<br />
</font></p>
<p style="margin-bottom: 0cm"><img height="301" alt="" src="http://www.blogjava.net/images/blogjava_net/fanlei77/2-4.JPG" width="424" border="0" /><br />
<br />
&nbsp; </p>
<p style="margin-bottom: 0cm"><font face="宋体, SimSun">例子还真不少，由于我现在比较饿了，所以我决定选择</font><font face="Times New Roman, serif">pizza Jsp Samples,</font><font face="宋体, SimSun">点击如下图：<br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/fanlei77/2-5.JPG" border="0" /><br />
</font></p>
<p style="margin-bottom: 0cm">&nbsp; </p>
<p><span style="font-family: 宋体">好了，具体的执行方法已经用黑体字（其实都是黑体。。。）标示的很清楚了，我这里就不像唐僧一样唠叨了。我们来在</span>Lotus Expeditor Client<span style="font-family: 宋体">上运行一下</span>Pizza Samples<span style="font-family: 宋体">吧，先爽一爽。</span></p>
<p style="margin-bottom: 0cm"><span style="font-family: 宋体">右键点击工程，选择</span>Run As-Run on Server,<span style="font-family: 宋体">弹出如下对话框：<br />
</span></p>
<p style="margin-bottom: 0cm"><img height="616" alt="" src="http://www.blogjava.net/images/blogjava_net/fanlei77/2-7.JPG" width="592" border="0" /></p>
<p style="margin-bottom: 0cm">&nbsp; </p>
<p><span style="font-family: 宋体">我们直接点击</span>Finish<span style="font-family: 宋体">看看效果如何，会出现</span>Lotus Expeditor Client<span style="font-family: 宋体">的编辑窗口，要求输入密码，初始密码一定要记住哦，可以简单地设定为</span>1234567<span style="font-family: 宋体">。输入密码后就进入了</span>Lotus Expeditor Client<span style="font-family: 宋体">的主页面，点击左上角的蓝色</span>&#8220;<span style="font-family: 宋体">打开</span>&#8221;<span style="font-family: 宋体">按钮，如下图：</span></p>
<p style="margin-bottom: 0cm"><img alt="" src="http://www.blogjava.net/images/blogjava_net/fanlei77/2-8.JPG" border="0" /><br />
<br />
&nbsp; </p>
<p><span style="font-family: 宋体">菜单项中，</span>Web<span style="font-family: 宋体">浏览器，订单输入富客户机样本，</span>Enterprise Management Agent Servlet<span style="font-family: 宋体">，订单数据</span>Web<span style="font-family: 宋体">样本是</span>Lotus<span style="font-family: 宋体">自带的</span>web application,<span style="font-family: 宋体">我们重点看一下刚才创建的</span>pizza Jsp,<span style="font-family: 宋体">点击最后一个</span>&#8221;<span style="font-family: 宋体">样本</span>Pizza JSP Web Application&#8221;,<span style="font-family: 宋体">出现页面如下：</span></p>
<p style="margin-bottom: 0cm"><img height="624" alt="" src="http://www.blogjava.net/images/blogjava_net/fanlei77/2-9.JPG" width="1015" border="0" /><br />
&nbsp;<br />
&nbsp; </p>
<p><span style="font-family: 宋体">说明我们之前的操作都成功了，什么？你没出现这样的画面？人品问题，自己再按照前面的步骤重新做一遍。其实问题的关键并不是</span>Lotus Expeditor,<span style="font-family: 宋体">我们现在回过头看看</span>Eclipse<span style="font-family: 宋体">里有什么变化<br />
</span></p>
<br />
<img height="800" alt="" src="http://www.blogjava.net/images/blogjava_net/fanlei77/2-10.JPG" width="1280" border="0" /><br />
<br />
<span lang="EN-US" style="font-size: 12pt; color: black; font-family: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-bidi-font-family: Tahoma; mso-fareast-language: ZH-CN; mso-bidi-language: EN-US; mso-ansi-language: EN-US">Eclipse</span><span style="font-size: 12pt; color: black; font-family: 宋体; mso-bidi-font-family: Tahoma; mso-fareast-language: ZH-CN; mso-bidi-language: EN-US; mso-ansi-language: EN-US; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">里面也打开了一个</span><span lang="EN-US" style="font-size: 12pt; color: black; font-family: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-bidi-font-family: Tahoma; mso-fareast-language: ZH-CN; mso-bidi-language: EN-US; mso-ansi-language: EN-US">Web</span><span style="font-size: 12pt; color: black; font-family: 宋体; mso-bidi-font-family: Tahoma; mso-fareast-language: ZH-CN; mso-bidi-language: EN-US; mso-ansi-language: EN-US; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">浏览器，具体地址</span><span lang="EN-US" style="font-size: 12pt; color: black; font-family: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-bidi-font-family: Tahoma; mso-fareast-language: ZH-CN; mso-bidi-language: EN-US; mso-ansi-language: EN-US">http://localhost:8777/PizzaJSP/Pizza,</span><span style="font-size: 12pt; color: black; font-family: 宋体; mso-bidi-font-family: Tahoma; mso-fareast-language: ZH-CN; mso-bidi-language: EN-US; mso-ansi-language: EN-US; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我们打开</span><span lang="EN-US" style="font-size: 12pt; color: black; font-family: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-bidi-font-family: Tahoma; mso-fareast-language: ZH-CN; mso-bidi-language: EN-US; mso-ansi-language: EN-US">IE</span><span style="font-size: 12pt; color: black; font-family: 宋体; mso-bidi-font-family: Tahoma; mso-fareast-language: ZH-CN; mso-bidi-language: EN-US; mso-ansi-language: EN-US; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">访问上面这个地址，发现是可以访问的<br />
&nbsp;
<p><span style="font-family: 宋体">运行</span>-cmd<span style="font-family: 宋体">，打开命令行窗口，</span>netstat -a <span style="font-family: 宋体">查看活动的端口，如下图：<br />
</span></p>
</span><img height="431" alt="" src="http://www.blogjava.net/images/blogjava_net/fanlei77/2-12.JPG" width="666" border="0" /><br />
&nbsp;
<p><span style="font-family: 宋体">我们可以看到</span>8777<span style="font-family: 宋体">端口是活动的，这个</span>8777<span style="font-family: 宋体">端口就是</span>Client Service<span style="font-family: 宋体">的默认端口了，我们先不研究如何修改端口，</span>Client Service<span style="font-family: 宋体">的原理，那个先放到后面谈。</span></p>
<br />
<img src ="http://www.blogjava.net/fanlei77/aggbug/174991.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanlei77/" target="_blank">EricFan</a> 2008-01-13 16:33 <a href="http://www.blogjava.net/fanlei77/archive/2008/01/13/174991.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Lotus Expeditor v6.1的世界(一) 利用Eclipse搭建开发环境</title><link>http://www.blogjava.net/fanlei77/archive/2007/11/29/163984.html</link><dc:creator>EricFan</dc:creator><author>EricFan</author><pubDate>Thu, 29 Nov 2007 06:31:00 GMT</pubDate><guid>http://www.blogjava.net/fanlei77/archive/2007/11/29/163984.html</guid><wfw:comment>http://www.blogjava.net/fanlei77/comments/163984.html</wfw:comment><comments>http://www.blogjava.net/fanlei77/archive/2007/11/29/163984.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/fanlei77/comments/commentRss/163984.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanlei77/services/trackbacks/163984.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/fanlei77/archive/2007/11/29/163984.html'>阅读全文</a><img src ="http://www.blogjava.net/fanlei77/aggbug/163984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanlei77/" target="_blank">EricFan</a> 2007-11-29 14:31 <a href="http://www.blogjava.net/fanlei77/archive/2007/11/29/163984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>