﻿<?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>IT博客-SOA中间件——快速开发平台ES2007</title><link>http://www.cnitblog.com/es2007shimiao/</link><description>es2007</description><language>zh-cn</language><lastBuildDate>Mon, 04 May 2026 19:23:37 GMT</lastBuildDate><pubDate>Mon, 04 May 2026 19:23:37 GMT</pubDate><ttl>60</ttl><item><title>认识软件开发平台</title><link>http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73390.html</link><dc:creator>方正飞鸿</dc:creator><author>方正飞鸿</author><pubDate>Wed, 20 Apr 2011 10:10:00 GMT</pubDate><guid>http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73390.html</guid><wfw:comment>http://www.cnitblog.com/es2007shimiao/comments/73390.html</wfw:comment><comments>http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73390.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/es2007shimiao/comments/commentRss/73390.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/es2007shimiao/services/trackbacks/73390.html</trackback:ping><description><![CDATA[软件开发平台是一种软件开发工具，以通用技术架构（如MVC）为基础，集成常用建模工具、二次开发包、基础解决方案等而成。可以大幅缩减编码率，使开发者有更多时间关注客户需求，在项目的需求、设计、开发、测试、部署、维护等各个阶段均可提供强大的支持。<br>软件开发平台源于繁琐的实践开发过程中。开发人员在实践中将常用的函数、类、抽象、接口等进行总结、封装，成为了可以重复使用的&#8220;中间件&#8221;，而随着&#8220;中间件&#8221;的成熟和通用，功能更强大、更能满足企业级客户需求的——软件开平台应运而生。
<p>平台是一段时间内科研成果的汇聚，也是阶段性平台期的标志，为行业进入新的研发领域提供了基础。</p>
<p>平台对企业核心竞争力的提升非常明显，目前国内的管理软件市场，软件开发平台的应用已经成为一种趋势。</p>
<p>由于开发环境、开发人员、功能定位、行业背景等的不同，不同品牌的平台存在较大差别。以方正软件开发平台（<a href="http://www.founderfix.com/"><font color=#fece13>www.founderfix.com</font></a>）为例，其最大特点在于可视化的界面定制、方便快捷的流程配置、按需定义的报表定制、功能完善的二次开发支持。</p>
<p>软件开发平台相对传统开发模式的优势：</p>
<p>1、优化产品基础架构，提升软件开发质量；</p>
<p>2、减少编码率，提高开发效率，提升开发的灵活性；</p>
<p>3、可以充分关注客户需求，实现按需定制；</p>
<p>4、实现配置组件的标准化，提升产品稳定性和兼容性；</p>
<p>5、提升企业开发能力，降低后期维护的时间和成本。</p>
<img src ="http://www.cnitblog.com/es2007shimiao/aggbug/73390.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/es2007shimiao/" target="_blank">方正飞鸿</a> 2011-04-20 18:10 <a href="http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73390.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用jsp生成web静态页面</title><link>http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73389.html</link><dc:creator>方正飞鸿</dc:creator><author>方正飞鸿</author><pubDate>Wed, 20 Apr 2011 10:09:00 GMT</pubDate><guid>http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73389.html</guid><wfw:comment>http://www.cnitblog.com/es2007shimiao/comments/73389.html</wfw:comment><comments>http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73389.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/es2007shimiao/comments/commentRss/73389.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/es2007shimiao/services/trackbacks/73389.html</trackback:ping><description><![CDATA[&nbsp;随着网站的不断扩大，首页面的内容越来越多，甚至要放置赢利性质的广告，而这些内容，每次被用户访问时都是从数据库中读取或者经过业务逻辑处理获得结果，这样会严重影响页面的加载速度，很多网站都是使用静态的html首页面来结局问题。<br>&nbsp;<br>实现过程<br>1．创建jsp页面，添加测试内容<br>&nbsp;<br>2．编写MyOutputStream类他继承自ServletOutputStream类并重写write()方法，使用自己的字节数组输出流实现了数据输出。关键代码如下：<br>&nbsp;<br>import java.io.ByteArrayOutputStream;<br>&nbsp;<br>import java.io.IOException;<br>&nbsp;<br>import javax.servlet.ServletOutputStream;<br>&nbsp;<br>public class MyOutputStream extends ServletOutputStream {<br>&nbsp;<br>&nbsp; private ByteArrayOutputStream stream;<br>&nbsp;<br>&nbsp; public MyOutputStream(ByteArrayOutputStream stream){<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; this.stream=stream;<br>&nbsp;<br>&nbsp; }<br>&nbsp;<br>&nbsp; @Override<br>&nbsp;<br>&nbsp; public void write(int arg0) throws IOException {<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; // TODO Auto-generated method stub<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; stream.write(arg0);<br>&nbsp;<br>&nbsp; }<br>&nbsp;<br>&nbsp;<br>}<br>&nbsp;<br>3．编写ResponseWrapper类，他继承自HttpServletResponseWrapper类，并重写getOutputStream()和getWriter()方法，返回本类定义的输出流，自定义的的getContent()方法可以获取这些输出流的数据。关键代码如下。<br>&nbsp;<br>import java.io.ByteArrayOutputStream;<br>&nbsp;<br>import java.io.IOException;<br>&nbsp;<br>import java.io.PrintWriter;<br>&nbsp;<br>import javax.servlet.ServletOutputStream;<br>&nbsp;<br>import javax.servlet.http.HttpServletResponse;<br>&nbsp;<br>import javax.servlet.http.HttpServletResponseWrapper;<br>&nbsp;<br>import com.stream.MyOutputStream;<br>&nbsp;<br>public class ResponseWrapper extends HttpServletResponseWrapper {<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; private MyOutputStream stream;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; private ByteArrayOutputStream byteStream;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; private PrintWriter pw;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; public ResponseWrapper(HttpServletResponse response) {<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super(response);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TODO Auto-generated constructor stub<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.byteStream=new ByteArrayOutputStream();<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.stream=new MyOutputStream(this.byteStream);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.pw=new PrintWriter(this.byteStream);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; @Override<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; public ServletOutputStream getOutputStream() throws IOException {<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TODO Auto-generated method stub<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return stream;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; @Override<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; public PrintWriter getWriter() throws IOException {<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TODO Auto-generated method stub<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.pw;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; public String getContent(){<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //取出空格，必须否则在页面中会有其他字符<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.byteStream.toString().trim();<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;<br>}<br>&nbsp;<br>4．编写CreateHTMLFilter过滤器，实现Filter接口，在doFilter()方法中实现业务。<br>&nbsp;<br>import java.io.DataOutputStream;<br>&nbsp;<br>import java.io.File;<br>&nbsp;<br>import java.io.FileOutputStream;<br>&nbsp;<br>import java.io.IOException;<br>&nbsp;<br>import java.util.Date;<br>&nbsp; <br>import javax.servlet.Filter;<br>&nbsp;<br>import javax.servlet.FilterChain;<br>&nbsp;<br>import javax.servlet.FilterConfig;<br>&nbsp;<br>import javax.servlet.ServletException;<br>&nbsp;<br>import javax.servlet.ServletRequest;<br>&nbsp;<br>import javax.servlet.ServletResponse;<br>&nbsp;<br>import javax.servlet.http.HttpServletRequest;<br>&nbsp;<br>import javax.servlet.http.HttpServletResponse;<br>&nbsp;<br>import com.stream.MyOutputStream;<br>&nbsp;<br>import com.wrapper.ResponseWrapper;<br>&nbsp;<br>/**<br>&nbsp;<br>&nbsp;* Servlet Filter implementation class CreateHTMLFilter<br>&nbsp;<br>&nbsp;*/<br>&nbsp;<br>public class CreateHTMLFilter implements Filter {<br>&nbsp;<br>&nbsp; /**<br>&nbsp;<br>&nbsp;&nbsp; * Default constructor.<br>&nbsp;<br>&nbsp;&nbsp; */<br>&nbsp;<br>&nbsp; public CreateHTMLFilter() {<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; // TODO Auto-generated constructor stub<br>&nbsp;<br>&nbsp; }<br>&nbsp;<br>&nbsp; /**<br>&nbsp;<br>&nbsp;&nbsp; * @see Filter#destroy()<br>&nbsp;<br>&nbsp;&nbsp; */<br>&nbsp;<br>&nbsp; public void destroy() {<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; // TODO Auto-generated method stub<br>&nbsp;<br>&nbsp; }<br>&nbsp;<br>&nbsp; /**<br>&nbsp;<br>&nbsp;&nbsp; * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)<br>&nbsp;<br>&nbsp;&nbsp; */<br>&nbsp;<br>&nbsp; public void doFilter(ServletRequest request, ServletResponse response,<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FilterChain chain) throws IOException, ServletException {<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; // TODO Auto-generated method stub<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; // place your code here<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; HttpServletResponse res = (HttpServletResponse) response;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; ResponseWrapper wrapper = new ResponseWrapper(res);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; // pass the request along the filter chain<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; chain.doFilter(request, wrapper);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; wrapper.getWriter().flush();<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; HttpServletRequest req = (HttpServletRequest) request;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; String path = req.getSession().getServletContext()<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getRealPath("index.jsp");<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(path);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; File file = new File(path);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; // 创建要生成的html页面对象<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; File htmlFile = new File(file.getParentFile(), "index.html");<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; // html页面创建时间<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; Date htmlDate = null;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; Date now = new Date();<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; if (!htmlFile.exists()) {<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; htmlFile.createNewFile();<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; } else {<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; htmlDate = new Date(htmlFile.lastModified());<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; // 根据文件的创建时间判断是否需要新建html页面<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; if (htmlDate == null || htmlDate.getDate() != now.getDate()) {<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileOutputStream fos = new FileOutputStream(htmlFile);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataOutputStream dos = new DataOutputStream(fos);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(wrapper.getContent().trim());<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dos.writeUTF(wrapper.getContent());<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dos.close();<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; request.getRequestDispatcher("index.html").forward(request, response);<br>&nbsp;<br>&nbsp; }<br>&nbsp;<br>&nbsp; /**<br>&nbsp;<br>&nbsp;&nbsp; * @see Filter#init(FilterConfig)<br>&nbsp;<br>&nbsp;&nbsp; */<br>&nbsp;<br>&nbsp; public void init(FilterConfig fConfig) throws ServletException {<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; // TODO Auto-generated method stub<br>&nbsp;<br>&nbsp; }<br>&nbsp;<br>}<br>&nbsp;<br>5．web.xml文件配置如下：<br>&nbsp;<br>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
<p><br>&lt;web-app xmlns:xsi=<a href="http://www.w3.org/2001/XMLSchema-instance"><font color=#fece13>http://www.w3.org/2001/XMLSchema-instance</font></a></p>
<p><br>&nbsp; xmlns=<a href="http://java.sun.com/xml/ns/javaee"><font color=#fece13>http://java.sun.com/xml/ns/javaee</font></a> xmlns:web="<a href="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><font color=#fece13>http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd</font></a>"</p>
<p><br>&nbsp; xsi:schemaLocation="<a href="http://java.sun.com/xml/ns/javaee"><font color=#fece13>http://java.sun.com/xml/ns/javaee</font></a> <a href="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><font color=#fece13>http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd</font></a>"</p>
<p><br>&nbsp; id="WebApp_ID" version="2.5"&gt;</p>
<p><br>&nbsp; &lt;display-name&gt;dynamic&lt;/display-name&gt;</p>
<p><br>&nbsp; &lt;welcome-file-list&gt;</p>
<p><br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;</p>
<p><br>&nbsp; &lt;/welcome-file-list&gt;</p>
<p><br>&nbsp; &lt;filter&gt;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;display-name&gt;CreateHTMLFilter&lt;/display-name&gt;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;filter-name&gt;CreateHTMLFilter&lt;/filter-name&gt;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;filter-class&gt;com.filter.CreateHTMLFilter&lt;/filter-class&gt;<br>&nbsp;<br>&nbsp; &lt;/filter&gt;<br>&nbsp;<br>&nbsp; &lt;filter-mapping&gt;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;filter-name&gt;CreateHTMLFilter&lt;/filter-name&gt;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br>&nbsp;<br>&nbsp; &lt;/filter-mapping&gt;<br>&nbsp;<br>&lt;/web-app&gt;<br>&nbsp;<br>6．&nbsp; 测试，可以看到你想要的结果了.</p>
<img src ="http://www.cnitblog.com/es2007shimiao/aggbug/73389.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/es2007shimiao/" target="_blank">方正飞鸿</a> 2011-04-20 18:09 <a href="http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73389.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>方正快速开发平台ES2007(3.5版本)新增功能特点</title><link>http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73388.html</link><dc:creator>方正飞鸿</dc:creator><author>方正飞鸿</author><pubDate>Wed, 20 Apr 2011 10:07:00 GMT</pubDate><guid>http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73388.html</guid><wfw:comment>http://www.cnitblog.com/es2007shimiao/comments/73388.html</wfw:comment><comments>http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73388.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/es2007shimiao/comments/commentRss/73388.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/es2007shimiao/services/trackbacks/73388.html</trackback:ping><description><![CDATA[<p style="TEXT-INDENT: 2em"><strong><font size=3>1、集成FineReport MINI版报表 </font></strong></p>
<p style="TEXT-INDENT: 2em"><strong><font size=3>2、数据表敏感字段控制（编辑、只读、隐藏） </font></strong></p>
<p style="TEXT-INDENT: 2em"><strong><font size=3>3、系统码表配置（支持SQL函数配置） </font></strong></p>
<p style="TEXT-INDENT: 2em"><strong><font size=3>4、ExtJs 控件数据集显示（列宽度及列顺序可拖拉、数据表GRID分组） </font></strong></p>
<p style="TEXT-INDENT: 2em"><strong><font size=3>5、全面AJAX技术异步分页 </font></strong></p>
<p style="TEXT-INDENT: 2em"><strong><font size=3>6、系统分级赋权</font></strong></p>
<p style="TEXT-INDENT: 2em"><strong><font size=3>7、系统以Windows XP风格主题显示， 全面DIV层展现表单窗口</font></strong></p>
<p style="TEXT-INDENT: 2em"><strong><font size=3>8、系统方案文档生成工具（数据字典 、详细设计） </font></strong></p>
<p style="TEXT-INDENT: 2em"><strong><font size=3>9、系统更新包生成工具</font></strong></p>
<img src ="http://www.cnitblog.com/es2007shimiao/aggbug/73388.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/es2007shimiao/" target="_blank">方正飞鸿</a> 2011-04-20 18:07 <a href="http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73388.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用javascript调用webservice示例</title><link>http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73387.html</link><dc:creator>方正飞鸿</dc:creator><author>方正飞鸿</author><pubDate>Wed, 20 Apr 2011 10:06:00 GMT</pubDate><guid>http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73387.html</guid><wfw:comment>http://www.cnitblog.com/es2007shimiao/comments/73387.html</wfw:comment><comments>http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73387.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/es2007shimiao/comments/commentRss/73387.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/es2007shimiao/services/trackbacks/73387.html</trackback:ping><description><![CDATA[再javascript中使用soap调用webservice的示例代码<br>代码再IE6和FF测试通过,对于c#写的webservice和java(xfire)写的,都测试过,没有问题<br>此代码原型来源于 [url]http://www.guru4.net/[/url] 的javascript soapclient<br>发现这个下载的js只能用于调用c#的webservice,所以利用mootools,重新封装,达到IE和火狐的兼容的同时,兼容java和c#<br>(再例子中使用的 mootools.v1.11.js 文件,做过修改)<br>客户端js调用代码如下<br>js 代码<br>1.function ajaxRequest()&nbsp; &nbsp; <br>2.&nbsp; &nbsp; {&nbsp; &nbsp; <br>3.&nbsp; &nbsp; &nbsp; &nbsp; var url = "http://localhost:88/webservicedemo.asmx";&nbsp; &nbsp; <br>4.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>5.&nbsp; &nbsp; &nbsp; &nbsp; //设置webService传入参数&nbsp; &nbsp; <br>6.&nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; &nbsp; <br>7.&nbsp; &nbsp; &nbsp; &nbsp; //注意:&nbsp; &nbsp; <br>8.&nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; &nbsp; <br>9.&nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; &nbsp; 调用.Net 写的webservice(如例子中的webservicedemo.asmx)&nbsp; &nbsp; <br>10.&nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HelloTo(String name)&nbsp; 针对name参数必须写成 &lt;name&gt;&lt;/name&gt;wqj,还有更多参数一样写,使用名称匹配&nbsp; &nbsp; <br>11.&nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 传入的参数数量可以不等于(多于或少于)方法要求的参数&nbsp; &nbsp; <br>12.&nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; &nbsp; <br>13.&nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; &nbsp; 调用java(xfire) 发布的webService&nbsp; &nbsp; <br>14.&nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 传入的参数必须与调用方法的参数数量相等,且按传入值的顺序进行匹配&nbsp; &nbsp; <br>15.&nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; &nbsp; <br>16.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>17.&nbsp; &nbsp; &nbsp; &nbsp; var para = "&lt;name&gt;&lt;/name&gt;wqj"; 这里应该是一个标准的xml形式,源码贴出来时被虑掉了,请参看附件源码&nbsp; <br>18.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>19.&nbsp; &nbsp; &nbsp; &nbsp; var op = {&nbsp; &nbsp; <br>20.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data:para,&nbsp; &nbsp; <br>21.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; onComplete: showResponse,&nbsp; &nbsp; <br>22.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; onFailure:showError,&nbsp; &nbsp; <br>23.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; update:'ajaxBack'&nbsp; &nbsp; <br>24.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; };&nbsp; &nbsp; <br>25.&nbsp; <br>26.&nbsp; &nbsp; &nbsp; &nbsp; var service = new WebService(url,"HelloTo",op);&nbsp; &nbsp; <br>27.&nbsp; &nbsp; &nbsp; &nbsp; service.request();&nbsp; &nbsp; <br>28.&nbsp; &nbsp; &nbsp; &nbsp; return false;&nbsp; &nbsp; <br>29.&nbsp; &nbsp; }&nbsp; &nbsp; <br>30.&nbsp; &nbsp; function showError(obj)&nbsp; &nbsp; <br>31.&nbsp; &nbsp; {&nbsp; &nbsp; <br>32.&nbsp; &nbsp; &nbsp; &nbsp; //obj 是一个xmlHttpRequest对象&nbsp; &nbsp; <br>33.&nbsp; &nbsp; &nbsp; &nbsp; alert("error");&nbsp; &nbsp; <br>34.&nbsp; &nbsp; }&nbsp; &nbsp; <br>35.&nbsp; &nbsp; function showResponse(requestText,requestXML)&nbsp; &nbsp; <br>36.&nbsp; &nbsp; {&nbsp; &nbsp; <br>37.&nbsp; &nbsp; &nbsp; &nbsp; //requestText 返回的文本&nbsp; &nbsp; <br>38.&nbsp; &nbsp; &nbsp; &nbsp; //requestXML 返回的XML&nbsp; &nbsp; <br>39.&nbsp; &nbsp; &nbsp; &nbsp; alert("ok");&nbsp; &nbsp; <br>40.&nbsp; &nbsp; }&nbsp; <br>WebService类的代码如下(webservice.js)<br>js 代码<br>1.&nbsp; <br>2.var WSDLS = {};&nbsp; &nbsp; <br>1.&nbsp; <br>2.var WebService = new Class({&nbsp; &nbsp; <br>1.&nbsp; <br>2.&nbsp; &nbsp; url : '',&nbsp; &nbsp; <br>3.&nbsp; &nbsp; method : '',&nbsp; &nbsp; <br>4.&nbsp; &nbsp; options:&nbsp; &nbsp; <br>5.&nbsp; &nbsp; {&nbsp; &nbsp; <br>6.&nbsp; &nbsp; &nbsp; &nbsp; method:'GET',&nbsp; &nbsp; <br>7.&nbsp; &nbsp; &nbsp; &nbsp; data: null,&nbsp; &nbsp; <br>8.&nbsp; &nbsp; &nbsp; &nbsp; update: null,&nbsp; &nbsp; <br>9.&nbsp; &nbsp; &nbsp; &nbsp; onComplete: Class.empty,&nbsp; &nbsp; <br>10.&nbsp; &nbsp; &nbsp; &nbsp; onError:Class.empty,&nbsp; &nbsp; <br>11.&nbsp; &nbsp; &nbsp; &nbsp; evalScripts: false,&nbsp; &nbsp; <br>12.&nbsp; &nbsp; &nbsp; &nbsp; evalResponse: false&nbsp; <br>13.&nbsp; &nbsp; },&nbsp; &nbsp; <br>14.&nbsp; &nbsp; &nbsp; &nbsp; <br>15.&nbsp; &nbsp; initialize: function(url,method,options)&nbsp; &nbsp; <br>16.&nbsp; &nbsp; {&nbsp; &nbsp; <br>17.&nbsp; &nbsp; &nbsp; &nbsp; this.url = url;&nbsp; &nbsp; <br>18.&nbsp; &nbsp; &nbsp; &nbsp; this.method = method;&nbsp; &nbsp; <br>19.&nbsp; &nbsp; &nbsp; &nbsp; this.options = options;&nbsp; &nbsp; <br>20.&nbsp; <br>21.&nbsp; &nbsp; },&nbsp; &nbsp; <br>22.&nbsp; &nbsp; &nbsp; &nbsp; <br>23.&nbsp; &nbsp; request : function()&nbsp; &nbsp; <br>24.&nbsp; &nbsp; {&nbsp; &nbsp; <br>25.&nbsp; &nbsp; &nbsp; &nbsp; var wsdl = WSDLS[this.url];&nbsp; &nbsp; <br>26.&nbsp; &nbsp; &nbsp; &nbsp; if(!wsdl)&nbsp; &nbsp; <br>27.&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; <br>28.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var op = {method:'GET',async: false};&nbsp; &nbsp; <br>29.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var wsdlAjax = new XHR(op).send(this.url + "?wsdl", null);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>30.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; wsdl = wsdlAjax.transport.responseXML;&nbsp; &nbsp; <br>31.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WSDLS[this.url] = wsdl;&nbsp; &nbsp; <br>32.&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; <br>33.&nbsp; &nbsp; &nbsp; &nbsp; this.setSoap(wsdl);&nbsp; &nbsp; <br>34.&nbsp; &nbsp; },&nbsp; &nbsp; <br>35.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>36.&nbsp; &nbsp; setSoap : function(wsdl)&nbsp; &nbsp; <br>37.&nbsp; &nbsp; {&nbsp; &nbsp; <br>38.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>39.&nbsp; &nbsp; &nbsp; &nbsp; var ns = (wsdl.documentElement.attributes["targetNamespace"] + "" == "undefined") ? wsdl.documentElement.attributes.getNamedItem("targetNamespace").nodeValue : wsdl.documentElement.attributes["targetNamespace"].value;&nbsp; &nbsp; <br>40.&nbsp; &nbsp; &nbsp; &nbsp; var sr =&nbsp; &nbsp; <br>41.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "" +&nbsp; &nbsp; <br>42.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "" <br>43.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +&nbsp; &nbsp; <br>44.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " +&nbsp; &nbsp; <br>45.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"&gt;" +&nbsp; &nbsp; <br>46.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&lt;soap:body&gt;"&lt;/soap:body&gt; +&nbsp; &nbsp; <br>47.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&lt;" + this.method + " xmlns=\"" + ns + "\"&gt;" +&nbsp; &nbsp; <br>48.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (this.options.data === null ?"":this.options.data) +&nbsp; &nbsp; <br>49.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; " + this.method + "&gt;;&nbsp; &nbsp; <br>50.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>51.&nbsp; &nbsp; &nbsp; &nbsp; this.options.method = 'post';&nbsp; &nbsp; <br>52.&nbsp; &nbsp; &nbsp; &nbsp; this.options.data = null;&nbsp; &nbsp; <br>53.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>54.&nbsp; &nbsp; &nbsp; &nbsp; var soapaction = ((ns.lastIndexOf("/") != ns.length - 1) ? ns + "/" : ns) + this.method;&nbsp; &nbsp; <br>55.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>56.&nbsp; &nbsp; &nbsp; &nbsp; var soapAjax = new Ajax(this.url,this.options);&nbsp; &nbsp; <br>57.&nbsp; &nbsp; &nbsp; &nbsp; soapAjax.setHeader("SOAPAction", soapaction);&nbsp; &nbsp; <br>58.&nbsp; &nbsp; &nbsp; &nbsp; soapAjax.setHeader("Content-type", "text/xml; charset=utf-8");&nbsp; &nbsp; <br>59.&nbsp; &nbsp; &nbsp; &nbsp; soapAjax.request(sr);&nbsp; &nbsp; <br>60.&nbsp; &nbsp; }&nbsp; &nbsp; <br>61.&nbsp; &nbsp; &nbsp; &nbsp; <br>62.});&nbsp; <br>在第一个版本中存在以下问题<br>1. 不能根据webservice的要求输入参数自动组织参数<br>2. 没有处理返回值<br>3.一旦webservice调用过程出错,会形成一个死循环(一直弹出error)<br>V2 说明 <br>1. 解决第一版中死循环的问题<br>2. 统一输入参数的传入形式(与mootools的ajax使用方式完全一致),形式如name=wqj&amp;age=20&amp;........<br>3. 自动根据参数名对应的值,组织webservice的传入参数,只根据webservice要求的参数名查找对应的值<br>&nbsp; &nbsp; 与顺序不再有关系.(对于xfire中的输入参数使用名称 in0,in1........)<br>&nbsp; &nbsp; 传入的参数数量也不再要求一致,多的自动丢弃,少的自动传空<br>4. 对于返回的XML,增加提取方法,返回需要的关键返回值(去掉XML的框框)<br>详细参照附件源码,下面是部分关键代码<br>WebService类的代码如下(webservice.js)<br>js 代码<br>1.var WSDLS = {};&nbsp; <br>2.&nbsp; <br>3.var WebService = new Class({&nbsp; <br>4.&nbsp; <br>5.&nbsp; &nbsp; url : '',&nbsp; <br>6.&nbsp; &nbsp; method : '',&nbsp; <br>7.&nbsp; &nbsp; options:&nbsp; <br>8.&nbsp; &nbsp; {&nbsp; <br>9.&nbsp; &nbsp; &nbsp; &nbsp; method:'GET',&nbsp; <br>10.&nbsp; &nbsp; &nbsp; &nbsp; data: null,&nbsp; <br>11.&nbsp; &nbsp; &nbsp; &nbsp; update: null,&nbsp; <br>12.&nbsp; &nbsp; &nbsp; &nbsp; onComplete: Class.empty,&nbsp; <br>13.&nbsp; &nbsp; &nbsp; &nbsp; onError:Class.empty,&nbsp; <br>14.&nbsp; &nbsp; &nbsp; &nbsp; evalScripts: false,&nbsp; <br>15.&nbsp; &nbsp; &nbsp; &nbsp; evalResponse: false&nbsp; <br>16.&nbsp; &nbsp; },&nbsp; <br>17.&nbsp; &nbsp; &nbsp; <br>18.&nbsp; &nbsp; initialize: function(url,method,options)&nbsp; <br>19.&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; <br>20.&nbsp; &nbsp; &nbsp; &nbsp; this.url = url;&nbsp; <br>21.&nbsp; &nbsp; &nbsp; &nbsp; this.method = method;&nbsp; <br>22.&nbsp; &nbsp; &nbsp; &nbsp; this.options = options;&nbsp; <br>23.&nbsp; &nbsp; },&nbsp; <br>24.&nbsp; &nbsp; &nbsp; <br>25.&nbsp; &nbsp; request : function()&nbsp; <br>26.&nbsp; &nbsp; {&nbsp; <br>27.&nbsp; &nbsp; &nbsp; &nbsp; var wsdl = WSDLS[this.url];&nbsp; <br>28.&nbsp; &nbsp; &nbsp; &nbsp; if(!wsdl)&nbsp; <br>29.&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; <br>30.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var op = {method:'GET',async: false};&nbsp; <br>31.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var wsdlAjax = new XHR(op).send(this.url + "?wsdl", null);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>32.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; wsdl = wsdlAjax.transport.responseXML;&nbsp; <br>33.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WSDLS[this.url] = wsdl;&nbsp; <br>34.&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; <br>35.&nbsp; <br>36.&nbsp; &nbsp; &nbsp; &nbsp; this.setSoap(wsdl);&nbsp; <br>37.&nbsp; &nbsp; },&nbsp; <br>38.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>39.&nbsp; &nbsp; setSoap : function(wsdl)&nbsp; <br>40.&nbsp; &nbsp; {&nbsp; <br>41.&nbsp; &nbsp; &nbsp; &nbsp; var paraXML = this.getParaXML(wsdl);&nbsp; <br>42.&nbsp; &nbsp; &nbsp; &nbsp; alert(paraXML);&nbsp; <br>43.&nbsp; &nbsp; &nbsp; &nbsp; var ns = (wsdl.documentElement.attributes["targetNamespace"] + "" == "undefined") ? wsdl.documentElement.attributes.getNamedItem("targetNamespace").nodeValue : wsdl.documentElement.attributes["targetNamespace"].value;&nbsp; <br>44.&nbsp; &nbsp; &nbsp; &nbsp; var sr =&nbsp; <br>45.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "" +&nbsp; <br>46.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; " +&nbsp; <br>47.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +&nbsp; <br>48.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " +&nbsp; <br>49.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"&gt;" +&nbsp; <br>50.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&lt;soap:body&gt;"&lt;/soap:body&gt; +&nbsp; <br>51.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&lt;" + this.method + " xmlns=\"" + ns + "\"&gt;" +&nbsp; <br>52.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; paraXML&nbsp; +&nbsp; <br>53.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; " + this.method + "&gt;";&nbsp; <br>54.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>55.&nbsp; &nbsp; &nbsp; &nbsp; this.options.method = 'post';&nbsp; <br>56.&nbsp; &nbsp; &nbsp; &nbsp; this.options.data = null;&nbsp; <br>57.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>58.&nbsp; &nbsp; &nbsp; &nbsp; var soapaction = ((ns.lastIndexOf("/") != ns.length - 1) ? ns + "/" : ns) + this.method;&nbsp; <br>59.&nbsp; <br>60.&nbsp; &nbsp; &nbsp; &nbsp; var soapAjax = new Ajax(this.url,this.options);&nbsp; <br>61.&nbsp; &nbsp; &nbsp; &nbsp; soapAjax.setHeader("SOAPAction", soapaction);&nbsp; <br>62.&nbsp; &nbsp; &nbsp; &nbsp; soapAjax.setHeader("Content-type", "text/xml; charset=utf-8");&nbsp; <br>63.&nbsp; &nbsp; &nbsp; &nbsp; soapAjax.request(sr);&nbsp; <br>64.&nbsp; &nbsp; },&nbsp; <br>65.&nbsp; &nbsp; getParaXML : function(wsdl)&nbsp; <br>66.&nbsp; &nbsp; {&nbsp; <br>67.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>68.&nbsp; &nbsp; &nbsp; &nbsp; var objNode = null;&nbsp; <br>69.&nbsp; &nbsp; &nbsp; &nbsp; var rtnValue = "";&nbsp; <br>70.&nbsp; &nbsp; &nbsp; &nbsp; //java(xfire)&nbsp; <br>71.&nbsp; &nbsp; &nbsp; &nbsp; var ell = this.getElementsByTagName(wsdl,"xsd:element");&nbsp; &nbsp; &nbsp; <br>72.&nbsp; &nbsp; &nbsp; &nbsp; if(ell.length == 0)&nbsp; <br>73.&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; <br>74.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //c#&nbsp; <br>75.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ell = this.getElementsByTagName(wsdl,"s:element");&nbsp; &nbsp; <br>76.&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; <br>77.&nbsp; &nbsp; &nbsp; &nbsp; for(var i = 0; i &lt; ell.length; i++)&nbsp; <br>78.&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; <br>79.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(this.getElementAttrValue(ell[i],"name") == this.method)&nbsp; <br>80.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; <br>81.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; objNode = ell[i];&nbsp; <br>82.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; <br>83.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; <br>84.&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; <br>85.&nbsp; <br>86.&nbsp; &nbsp; &nbsp; &nbsp; if(objNode == null) return rtnValue;&nbsp; <br>87.&nbsp; &nbsp; &nbsp; &nbsp; //java(xfire)&nbsp; <br>88.&nbsp; &nbsp; &nbsp; &nbsp; ell = this.getElementsByTagName(objNode,"xsd:element");&nbsp; <br>89.&nbsp; &nbsp; &nbsp; &nbsp; if(ell.length == 0)&nbsp; <br>90.&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; <br>91.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //c#&nbsp; <br>92.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ell = this.getElementsByTagName(objNode,"s:element");&nbsp; <br>93.&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; <br>94.&nbsp; &nbsp; &nbsp; &nbsp; if(ell.length == 0) return rtnValue ;&nbsp; <br>95.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>96.&nbsp; &nbsp; &nbsp; &nbsp; var hash = new Hash();&nbsp; <br>97.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>98.&nbsp; &nbsp; &nbsp; &nbsp; if(this.options.data != null &amp;&amp; this.options.data.clean != "")&nbsp; <br>99.&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; <br>100.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; hash = this.options.data.split("&amp;").toHash("=");&nbsp; <br>101.&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; <br>102.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>103.&nbsp; &nbsp; &nbsp; &nbsp; for(var i = 0; i &lt; ell.length; i++)&nbsp; <br>104.&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; <br>105.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var paraName = this.getElementAttrValue(ell[i],"name");&nbsp; <br>106.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rtnValue = rtnValue + this.getSingleXML(paraName,hash);&nbsp; <br>107.&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; <br>108.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>109.&nbsp; &nbsp; &nbsp; &nbsp; return rtnValue;&nbsp; <br>110.&nbsp; &nbsp; },&nbsp; <br>111.&nbsp; &nbsp; &nbsp; <br>112.&nbsp; &nbsp; getSingleXML : function (name,hash)&nbsp; <br>113.&nbsp; &nbsp; {&nbsp; <br>114.&nbsp; &nbsp; &nbsp; &nbsp; name = name.trim();&nbsp; <br>115.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>116.&nbsp; &nbsp; &nbsp; &nbsp; var rtnValue = "";&nbsp; <br>117.&nbsp; &nbsp; &nbsp; &nbsp; if(hash.hasKey(name))&nbsp; <br>118.&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; <br>119.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rtnValue = hash.get(name);&nbsp; <br>120.&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; <br>121.&nbsp; &nbsp; &nbsp; &nbsp; rtnValue = "&lt;" + name + "&gt;" + xmlscc(rtnValue) + " + name + "&gt;"&nbsp; <br>122.&nbsp; &nbsp; &nbsp; &nbsp; return rtnValue;&nbsp; <br>123.&nbsp; &nbsp; },&nbsp; <br>124.&nbsp; &nbsp; getBackData: function(xml)&nbsp; <br>125.&nbsp; &nbsp; {&nbsp; <br>126.&nbsp; &nbsp; &nbsp; &nbsp; var rtnValue = "";&nbsp; <br>127.&nbsp; &nbsp; &nbsp; &nbsp; //java(xfire)&nbsp; <br>128.&nbsp; &nbsp; &nbsp; &nbsp; var soap = this.getElementsByTagName(xml,"ns1:out");&nbsp; &nbsp; &nbsp; <br>129.&nbsp; &nbsp; &nbsp; &nbsp; if(soap.length == 0)&nbsp; <br>130.&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; <br>131.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //c#&nbsp; <br>132.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; soap = this.getElementsByTagName(xml,this.method + "Result");&nbsp; <br>133.&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; <br>134.&nbsp; &nbsp; &nbsp; &nbsp; return soap[0].childNodes[0].nodeValue;&nbsp; &nbsp; &nbsp; <br>135.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>136.&nbsp; &nbsp; },&nbsp; <br>137.&nbsp; &nbsp; getElementsByTagName : function(objNode,tagName)&nbsp; <br>138.&nbsp; &nbsp; {&nbsp; <br>139.&nbsp; &nbsp; &nbsp; &nbsp; //tagName 形式如 xsd:element ,写出tag的全称&nbsp; <br>140.&nbsp; <br>141.&nbsp; &nbsp; &nbsp; &nbsp; var ell;&nbsp; <br>142.&nbsp; &nbsp; &nbsp; &nbsp; if(this.isIE())&nbsp; <br>143.&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; <br>144.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ell = objNode.getElementsByTagName(tagName);&nbsp; &nbsp; &nbsp; <br>145.&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; <br>146.&nbsp; &nbsp; &nbsp; &nbsp; else&nbsp; <br>147.&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; <br>148.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(tagName.contains(":")) tagName = tagName.split(":")[1];&nbsp; <br>149.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ell = objNode.getElementsByTagName(tagName);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>150.&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; <br>151.&nbsp; &nbsp; &nbsp; &nbsp; return ell;&nbsp; <br>152.&nbsp; &nbsp; },&nbsp; <br>153.&nbsp; &nbsp; getElementAttrValue : function(objNode,attrName)&nbsp; <br>154.&nbsp; &nbsp; {&nbsp; <br>155.&nbsp; &nbsp; &nbsp; &nbsp; var rtnValue = "";&nbsp; <br>156.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>157.&nbsp; &nbsp; &nbsp; &nbsp; if(objNode == null) return rtnValue;&nbsp; <br>158.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>159.&nbsp; &nbsp; &nbsp; &nbsp; if(objNode.attributes[attrName] + "" == "undefined")&nbsp; <br>160.&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; <br>161.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(objNode.attributes.getNamedItem(attrName) != null)&nbsp; <br>162.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rtnValue = objNode.attributes.getNamedItem(attrName).nodeValue ;&nbsp; <br>163.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>164.&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; <br>165.&nbsp; &nbsp; &nbsp; &nbsp; else&nbsp; <br>166.&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; <br>167.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(objNode.attributes[attrName] != null)&nbsp; <br>168.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rtnValue = objNode.attributes[attrName].value;&nbsp; <br>169.&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; <br>170.&nbsp; &nbsp; &nbsp; &nbsp; return rtnValue;&nbsp; <br>171.&nbsp; &nbsp; },&nbsp; <br>172.&nbsp; &nbsp; isIE : function()&nbsp; <br>173.&nbsp; &nbsp; {&nbsp; <br>174.&nbsp; &nbsp; &nbsp; &nbsp; var isMSIE = /*@cc_on!@*/false;&nbsp; <br>175.&nbsp; &nbsp; &nbsp; &nbsp; return isMSIE;&nbsp; <br>176.&nbsp; &nbsp; }&nbsp; <br>177.});&nbsp; <br>178.&nbsp; <br>179.Array.extend({&nbsp; <br>180.&nbsp; &nbsp; &nbsp; <br>181.&nbsp; &nbsp; toHash : function (splitChar)&nbsp; <br>182.&nbsp; &nbsp; {&nbsp; <br>183.&nbsp; &nbsp; &nbsp; &nbsp; var hash = new Hash({});&nbsp; <br>184.&nbsp; &nbsp; &nbsp; &nbsp; for(var i=0;i&lt;this.length;i++)&nbsp; <br>185.&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; <br>186.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>187.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(this[i].split(splitChar).length == 1) contrnue;&nbsp; <br>188.&nbsp; <br>189.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var key = this[i].split(splitChar)[0].trim();&nbsp; <br>190.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var value = this[i].split(splitChar)[1].trim();&nbsp; <br>191.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>192.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; hash.set(key, value);&nbsp; <br>193.&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; <br>194.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>195.&nbsp; &nbsp; &nbsp; &nbsp; return hash;&nbsp; <br>196.&nbsp; &nbsp; }&nbsp; <br>197.});&nbsp; <br>198.&nbsp; <br>199.function xmlscc(strData)&nbsp; <br>200.{&nbsp; <br>201.&nbsp; <br>202.&nbsp; &nbsp; strData=strData.replace(/&amp;/g, "&amp;");&nbsp; <br>203.&nbsp; &nbsp; strData=strData.replace(/&gt;/g, "&gt;");&nbsp; <br>204.&nbsp; &nbsp; strData=strData.replace(/"&lt;");&nbsp; <br>205.&nbsp; &nbsp; strData=strData.replace(/"/g, """); <br>206.&nbsp; &nbsp; strData=strData.replace(/'/g, "'");&nbsp; <br>207.&nbsp; &nbsp; return strData;&nbsp; <br>208.}&nbsp; <br>相应的调用代码如下: <br>js 代码<br>1.&lt;script type=&lt; span=""&gt;"text/javascript"&gt;&nbsp; <br>2.&nbsp; &nbsp; &nbsp; <br>3.&nbsp; &nbsp; var service ;&nbsp; <br>4.&nbsp; &nbsp; function ajaxRequest()&nbsp; <br>5.&nbsp; &nbsp; {&nbsp; <br>6.&nbsp; &nbsp; &nbsp; &nbsp; var url = "http://localhost:88/webservicedemo.asmx";&nbsp; <br>7.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>8.&nbsp; &nbsp; &nbsp; &nbsp; //设置webService传入参数&nbsp; <br>9.&nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; <br>10.&nbsp; &nbsp; &nbsp; &nbsp; //注意:&nbsp; <br>11.&nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; <br>12.&nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; &nbsp; 调用webservice(如例子中的webservicedemo.asmx)&nbsp; <br>13.&nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HelloTo(String name)&nbsp; 针对name参数必须写成name=wqj ,还有更多参数一样写,使用&amp;符号分隔(name=11&amp;age=20&amp;.....),使用名称匹配&nbsp; <br>14.&nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 传入的参数数量可以不等于(多于或少于)方法要求的参数&nbsp; <br>15.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>16.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>17.&nbsp; &nbsp; &nbsp; &nbsp; var para = "name=wqj";&nbsp; <br>18.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>19.&nbsp; &nbsp; &nbsp; &nbsp; var op = {&nbsp; <br>20.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data:para,&nbsp; <br>21.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; onComplete: showResponse,&nbsp; <br>22.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; onFailure:showError,&nbsp; <br>23.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; update:'ajaxBack'&nbsp; <br>24.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; };&nbsp; <br>25.&nbsp; <br>26.&nbsp; &nbsp; &nbsp; &nbsp; service = new WebService(url,"HelloTo",op);&nbsp; <br>27.&nbsp; &nbsp; &nbsp; &nbsp; service.request();&nbsp; <br>28.&nbsp; &nbsp; &nbsp; &nbsp; return false;&nbsp; <br>29.&nbsp; &nbsp; }&nbsp; <br>30.&nbsp; &nbsp; function showError(obj)&nbsp; <br>31.&nbsp; &nbsp; {&nbsp; <br>32.&nbsp; &nbsp; &nbsp; &nbsp; //obj 是一个xmlHttpRequest对象&nbsp; <br>33.&nbsp; &nbsp; &nbsp; &nbsp; alert("error");&nbsp; <br>34.&nbsp; &nbsp; }&nbsp; <br>35.&nbsp; &nbsp; function showResponse(requestText,requestXML)&nbsp; <br>36.&nbsp; &nbsp; {&nbsp; <br>37.&nbsp; &nbsp; &nbsp; &nbsp; //requestText 返回的文本&nbsp; <br>38.&nbsp; &nbsp; &nbsp; &nbsp; //requestXML 返回的XML&nbsp; <br>39.&nbsp; &nbsp; &nbsp; &nbsp; // service.getBackData 就是取出返回的XML中,实际需要的数据&nbsp; <br>40.&nbsp; &nbsp; &nbsp; &nbsp; //经过测试兼容 IE,FF&nbsp; <br>41.&nbsp; &nbsp; &nbsp; &nbsp; alert(service.getBackData(requestXML));&nbsp; <br>42.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>43.&nbsp; &nbsp; }&nbsp; <br>44.&nbsp; &nbsp; &lt;/script&gt;
<img src ="http://www.cnitblog.com/es2007shimiao/aggbug/73387.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/es2007shimiao/" target="_blank">方正飞鸿</a> 2011-04-20 18:06 <a href="http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73387.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>项目管理系统的基本功能</title><link>http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73386.html</link><dc:creator>方正飞鸿</dc:creator><author>方正飞鸿</author><pubDate>Wed, 20 Apr 2011 10:05:00 GMT</pubDate><guid>http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73386.html</guid><wfw:comment>http://www.cnitblog.com/es2007shimiao/comments/73386.html</wfw:comment><comments>http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73386.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/es2007shimiao/comments/commentRss/73386.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/es2007shimiao/services/trackbacks/73386.html</trackback:ping><description><![CDATA[项目管理是一个管理学分支的学科，指在项目活动中运用专门的知识、技能、工具和方法，使项目能够在有限资源限定条件下，实现或超过设定的需求和期望。<br>基于软件的项目管理工具或者说项目管理软件，则从软件的角度为项目管理者提供参考和帮助，一般意义上，项目管理软件包括了项目管理的方方面面的功能，比如：计划管理、成本控制、资源管理、知识经验的管理等等。这样的软件我们也称之为项目管理系统。<br>现代的项目管理系统已经不再局限于为项目管理者提供帮助，而是成为整个项目团队的工作平台，项目成员可以直接在项目管理系统中展开项目工作，汇报工作进展。<br>项目管理系统<br>项目管理系统应该具备的基本功能有：<br><strong>计划、任务日程管理<br></strong>用户对每项任务排定起始日期、预计工期，并明确各任务的先后顺序以及可使用的资源。项目管理系统根据任务信息和资源信息排定项目日程，并随任务和资源的修改而调整日程。 <br><strong>项目监督和跟踪 <br></strong>项目管理系统可以跟踪多种活动，如任务的完成情况、费用、消耗的资源、工作分配等。通常的做法是用户定义一个计划，在实际执行过程中，根据当前资源的使用状况或项目的进展情况，进行一定程度的调整。 <br><strong>查询报表与统计<br></strong>与人工相比，项目管理系统的一个突出功能是能在用户数据资料的基础上，快速、简便地生成多种报表和图表，如&#8220;资源使用状况&#8221;表、&#8220;任务分配状况&#8221;表、进度图表等，更便于项目管理者掌握直观的把握项目进展。<br><strong>多项目和子项目管理<br></strong>有些项目大而且复杂，将其作为一个单一的项目进行管理难度较大。而将其分解成子项目后，可以分别查看每个子项目，更便于管理。<br>另外，在较大型公司中，一个成员同时参与多个项目的工作的情况也很常见，这就需要在多个项目中分配工作时间。<br><strong>导入和导出 <br></strong>许多项目管理系统允许用户从其他软件或标准文档格式中获取资料，比如Excel、XML、或一些数据库相关格式，这样就大大方便项目管理者初始建立项目数据。<br>通常，项目管理系统还可以通过电子邮件发送项目信息，这样项目人员可以脱离系统通过电子邮件获取信息，便于项目成员开展工作。<br><strong>对于行业的支持<br></strong>不同行业对于项目管理还有自己的特定需求，比如电子、制药、研发、软件等各个行业都有自己一些特殊的项目管理需求，因为这些特定的需求存在，所以一款项目管理系统并不一定能适用于各个行业和企业。<br><strong>研发项目管理系统<br></strong>研发型企业对于项目管理系统有更高的要求，通常可以列举下面的这些需求：<br><font size=2><strong>需求管理<br></strong></font>需求管理（Requirement Management）是项目团队工作的起点，需求管理却常常被人们误解为仅仅是需求的采集和分析。事实上，需求管理的内容远不止于此，它还包括需求的组织、跟踪、审查、确认、变更和验证。特别是需求的跟踪，它确保了所有开发行为都与用户需求紧密相关。<br><strong>缺陷管理<br></strong>缺陷管理（Defect Management）是在项目生命周期中获取、管理、沟通任何缺陷的过程（从缺陷的建议到缺陷最终的解决）。可以确保你的缺陷被跟踪管理而不丢失。 <br><strong>测试管理<br></strong>测试就是对项目开发过程的产品（编码、文档等）进行差错审查，保证其质量的一种过程，对这个过程的管理称之为测试管理（Test Management）、测试管理在很多软件型企业中尤为重要。<br>这些特定的需求，对于研发型企业至关重要，而又不是一般的项目管理系统所能做到的，所以研发型企业在考察项目管理系统选型时，就必须更多考虑这些需求能否得到满足。<br><strong>项目管理系统选型<br></strong>对于很多公司来说，项目管理离不开项目管理系统的支持，选择一套合适的项目管理系统尤为重要
<img src ="http://www.cnitblog.com/es2007shimiao/aggbug/73386.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/es2007shimiao/" target="_blank">方正飞鸿</a> 2011-04-20 18:05 <a href="http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73386.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat最大并发数</title><link>http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73385.html</link><dc:creator>方正飞鸿</dc:creator><author>方正飞鸿</author><pubDate>Wed, 20 Apr 2011 10:04:00 GMT</pubDate><guid>http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73385.html</guid><wfw:comment>http://www.cnitblog.com/es2007shimiao/comments/73385.html</wfw:comment><comments>http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73385.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/es2007shimiao/comments/commentRss/73385.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/es2007shimiao/services/trackbacks/73385.html</trackback:ping><description><![CDATA[<p>在server.xml里面的maxThreads是最大并发数，网上有人说默认的并发数就是150了，我有点不相信去tomcat的官方网站看了下DOC，才知道默认的并发数是200。 <br>Copy code<br><a href="http://tomcat.apache.org/tomcat-6.0-doc/config/http.html" target=_blank><font color=#fece13>http://tomcat.apache.org/tomcat-6.0-doc/config/http.html</font></a>是server配置说明。 <br><a href="http://tomcat.apache.org/tomcat-6.0-doc/config/http.html" target=_blank><font color=#fece13>http://tomcat.apache.org/tomcat-6.0-doc/config/http.html</font></a><wbr></p>
<img src ="http://www.cnitblog.com/es2007shimiao/aggbug/73385.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/es2007shimiao/" target="_blank">方正飞鸿</a> 2011-04-20 18:04 <a href="http://www.cnitblog.com/es2007shimiao/archive/2011/04/20/73385.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Weblogic安装配置大全</title><link>http://www.cnitblog.com/es2007shimiao/archive/2011/04/14/73341.html</link><dc:creator>方正飞鸿</dc:creator><author>方正飞鸿</author><pubDate>Thu, 14 Apr 2011 02:20:00 GMT</pubDate><guid>http://www.cnitblog.com/es2007shimiao/archive/2011/04/14/73341.html</guid><wfw:comment>http://www.cnitblog.com/es2007shimiao/comments/73341.html</wfw:comment><comments>http://www.cnitblog.com/es2007shimiao/archive/2011/04/14/73341.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/es2007shimiao/comments/commentRss/73341.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/es2007shimiao/services/trackbacks/73341.html</trackback:ping><description><![CDATA[用Eclipse MyEclipse WebLogic8.1开发第一个Web程序 <br>1.安装jre <br>Eclipse虽然由java开发，但本身并不自带jre。所以你必须先自己安装，去<a href="http://java.sun.com/downloads"><font color=#fece13>http://java.sun.com/downloads</font></a>下载最新J2SE1.4.2_03的jre安装文件j2re-1_4_2_03-windows-i586-p.exe。安装成功后，重启机器，并将jre的bin文件夹路径添加到系统环境变量PATH中，如：C:\Program Files\Java\j2re1.4.2_03\bin。 <br>2.安装Eclipse2.1.2 <br>Eclipse目前最新的stable已经Build到了3.0M5，但是这个版本的Lang gePackFeature还没有推出，直接用Lang gePackFeature2.1.2有问题。故建议用Eclipse稳定版本2.1.2，配上Lang gePackFeature2.1.2后可实现全中文界面。Eclipse SDK 2.1.2和其Lang gePackFeature下载地址为<a href="http://download2.eclipse.org/downloads"><font color=#fece13>http://download2.eclipse.org/downloads</font></a>。 <br>Eclipse的安装非常简单，只需解压缩eclipse-SDK-2.1.2-win32.zip，将文件夹eclipse拷贝到你想要的地方。然后双击eclipse.exe，即开始编译并初始化Eclipse，完毕自动进入Eclipse。 <br>下面开始安装Lang gePackFeature。 <br>(1)解压缩eclipse2.1.2.1-SDK-win32-Lang gePackFeature.zip。 <br>(2)启动Eclipse，选择&#8220;Help\Software Updates\Update Manager&#8221;菜单，使主界面切换到安装更新透视图画面。 <br>(3)在窗体左下方的Feature Updates视图中单击鼠标右键，选择&#8220;New\Site Bookmark&#8221;菜单，弹出New Site Bookmark对话框。在Name处随便输入什么名字，如：Lang gePack。URL处输入前面(1)解压缩后文件夹路径，如：file: E:\开发工具\Eclipse\eclipse2.1.2.1-SDK-win32-Lang gePackFeature\eclipse。完毕按下Finish按钮，关闭对话框。这时Feature Updates视图中就会出现一项&#8220;Lang gePack&#8221;。展开该项，就可以看到很多语言包插件。 <br>(4)选择一个语言包，如：Eclipse Java Development 工具语言包 1.2.1.2，单击右边视图中的Install Now按钮，即开始安装。安装成功后，Eclipse会重新启动。依次类推，逐个安装所有的语言包插件。在整个安装过程中你会发现所有界面都变成了简体中文。 <br>3.安装MyEclipse2.7RC2 <br>去<a href="http://www.myeclipseide.com/"><font color=#fece13>http://www.myeclipseide.com</font></a>下载最新的MyEclipse安装文件myeclipse_Enterprise_Workbench_Installer_020700RC2.exe。在安装过程中需要提供Eclipse所在文件夹的路径，安装成功后会自动进入Eclipse。这时你就会发现主菜单中多出一项&#8220;MyEclipse&#8221;，我们再选择&#8220;窗口\首选项&#8221;菜单，打开首选项对话框。展开MyEclipse结点，单击S scription子项，可以看到这是个30天限制版。不过你可以到<a href="http://www.cracks4u.com/"><font color=#fece13>http://www.cracks4u.com</font></a>上下载破解程序MyEclipse_Enterprise_Workbench_v3.6.4.zip。运行zip中的keygen.exe，随便输入一个用户名，然后选择2.6.4版本，单击Generate按钮生成S scription Code。将用户名和S scription Code输入到上述的S scriber和S scription Code文本框中，点击&#8220;应用&#8221;按钮即可看到信息Number of Licenses：unlimited，至此你的MyEclipse已被破解。 <br>4.安装WebLogic8.1 <br>安装WebLogic比较容易，在这里就不再累述了，大家可以参阅相关文档。现在着重讲一下WebLogic的配置，因为后面在配置MyEclipse时将用到这里的有关信息。 <br>(1)运行开始\程序\BEA WebLogic Platform 8.1\Configuration Wizard。 <br>(2)选择Create a new WebLogic configuration，下一步。 <br>(3)选择Basic WebLogic Server Domain，下一步。 <br>(4)选择Custom，下一步。 <br>(5)在Name处输入admin，Listen Address处选择localhost，以下两个Port均采用默认值，下一步。 <br>(6)选择Skip跳过Multiple Servers，Clusters，and Machines Options，下一步。 <br>(7)选择Skip跳过JDBC连接池的配置（注：JDBC连接池的配置可以在启动WebLogic后到控制台上进行，大家可以参阅相关文档），下一步。 <br>(选择Skip跳过JMS的配置（同样留到控制台上做），下一步。 <br>(9)继续跳过，下一步。 <br>(10)选择Yes，下一步。 <br>(11)在User页点击Add，随意添加一个用户user，密码12345678，下一步。 <br>(12)将用户user分配到Administrators组（还可以同时分配到其它组，方法是选中待加入的组，然后勾中user前的复选框即可），下一步。 <br>(13)直接点击下一步跳过。 <br>(14)设置用户user的权限，选中Admin，勾中user前的复选框（要指定其它权限依次类推），下一步。 <br>(15)采用默认设置，直接点击下一步跳过。 <br>(16)同样采用默认设置，直接点击下一步跳过。 <br>(17)配置JDK，采用WebLogic的默认值，直接点击下一步跳过。 <br>(1最后在Configuration Name处输入dev，然后点击Create生成配置，完毕点击Done关闭Configuration Wizard对话框。 <br>5.配置MyEclipse的WebLogic服务器 <br>MyEclipse默认的应用服务器为JBoss3，这里我们使用WebLogic8.1。启动Eclipse，选择&#8220;窗口\首选项&#8221;菜单，打开首选项对话框。展开MyEclipse下的Application Servers结点，点击JBoss 3，选中右面的Disable单选按钮，停用JBoss 3。然后点击WebLogic 8，选中右边的Enable单选按钮，启用WebLogic服务器。同时下面的配置如下： <br>(1)BEA home directory：D:\BEA。假定WebLogic安装在D:\BEA文件夹中。 <br>(2)WebLogic installation directory：D:\BEA\weblogic81。 <br>(3)Admin username：user。 <br>(4)Admin password：12345678。 <br>(5)Execution domain root：D:\BEA\user_projects\dev。 <br>(6)Execution domain name：dev。 <br>(7)Execution server name：admin。 <br>(8)Hostname:PortNumber：localhost:7001。 <br>(9)Security policy file：D:\BEA\weblogic81\server\lib\weblogic.policy。 <br>(10)JAAS login configuration file：省略。 <br>接着展开WebLogic 8结点，点击JDK，在右边的WLS JDK name处选择WebLogic 8的默认JDK。这里组合框中缺省为j2re1.4.2_03，即之前单独安装的jre。单击Add按钮，弹出WebLogic &gt; Add JVM对话框，在JRE名称处随便输入一个名字，如jre1.4.1_02。然后在JRE主目录处选择WebLogic安装文件夹中的JDK文件夹，如D:\BEA\jdk141_02，程序会自动填充Javadoc URL文本框和JRE系统库列表框。单击确定按钮关闭对话框。这时候就可以在WLS JDK name组合框中选择jre1.4.1_02了。之后还要在下面的Optional Java VM arguments，如-ms64m -mx64m -Djava.library.path="D:/BEA/weblogic81/server/bin" -Dweblogic.management.discover=false -Dweblogic.Prod tionModeEnabled=false <br>最后点击Paths，在右边的Prepend to classpath列表框中，通过Add JAR/ZIP按钮，加入D:\BEA\weblogic81\server\lib\weblogic.jar、D:\BEA\weblogic81\server\lib\webservices.jar。如果用到数据库，还需把数据库的驱动类库加进来，这里我们用WebLogic自带的SQL Server数据库驱动库D:\BEA\weblogic81\server\lib\mssqlserver4v65.jar。 <br>至此，MyEclipse中WebLogic8的配置工作就算完成了。下面可以看看在Eclipse中能否启动WebLogic了？自从安装了MyEclipse之后，Eclipse工具栏中就会有一个Run/Stop Servers下拉按钮。点击该按钮的下拉部分，选择&#8220;WebLogic 8\Start&#8221;菜单，即开始启动WebLogic了。通过查看下面的控制台消息，就可以知道启动是否成功，或有什么异常发生。停止WebLogic可选择&#8220;WebLogic\Stop&#8221;菜单。 <br>6.创建第一个Web程序——HelloWorld <br>启动Eclipse： <br>(1)选择&#8220;文件\新建\项目&#8221;菜单，打开新建项目向导。首先选择左边的J2EE，然后选择右边的Web Module Project，下一步在Project Name处理输入HelloWorld，点击完成按钮，生成项目文件。包视图结构如下： <br>HelloWorld <br>├─src <br>├─JRE系统库[j2re1.4.2_03] <br>├─J2EE 1.3 Library Container <br>└─WebRoot <br>(2)点击src，单击鼠标右键，选择&#8220;新建\Servlet&#8221;菜单，创建HelloWorld Servlet。在包名称处输入servlet，在Servlet名称处输入HelloWorld，去掉Create doGet复选框中的勾，下一步，采用默认设置，点击完成按钮。修改doPost方法代码如下： <br>response.setContentType("text/xml"); <br>PrintWriter out = response.getWriter(); <br>out.println("Hello World"); <br>out.flush(); <br>out.close(); <br>(3)点击WebRoot，单击鼠标右键，选择&#8220;新建\HTML&#8221;菜单，创建一个HTML页面。将File Name改为index.html，点击完成按钮。将下列代码替换&lt;body&gt;、&lt;/body&gt;之间的代码： <br>&lt;script lang ge="vbscript"&gt; <br>function bytes2bstr(vin) <br>strreturn = "" <br>for k = 1 to lenb(vin) <br>thischarcode = ascb(midb(vin,k,1)) <br>if thischarcode &lt; &amp;h80 then <br>strreturn = strreturn &amp; chr(thischarcode) <br>else <br>nextcharcode = ascb(midb(vin,k+1,1)) <br>strreturn = strreturn &amp; chr(clng(thischarcode) * &amp;h100 + cint(nextcharcode)) <br>k = k + 1 <br>end if <br>next <br>bytes2bstr = strreturn <br>end function <br>&lt;/script&gt; &lt;script lang ge="JavaScript"&gt; <br>var xml=null; <br>var XMLSender=new ActiveXObject("Microsoft.XMLHTTP"); <br>var url="http://localhost:7001/HelloWorld/servlet/HelloWorld?"; <br>XMLSender.Open("POST",url,false); <br>XMLSender.setReqstHeader("Content-Type","text/xml; charset=UTF-8"); <br>XMLSender.send(xml); <br>var msg=bytes2bstr(XMLSender.responsebody); <br>document.writeln(msg); <br>&lt;/script&gt; <br>(4)展开WEB-INF结点，双击打开web.xml，在&lt;/servlet-mapping&gt;下面加入下列语句： <br>&lt;welcome-file-list&gt; <br>&lt;welcome-file&gt;index.html&lt;/welcome-file&gt; <br>&lt;/welcome-file-list&gt; <br>(5)点击HelloWorld，单击鼠标右键，选择&#8220;MyEclipse\Add and Remove Project Deployments&#8230;&#8221;菜单，弹出Project Deployments对话框，在Project组合框中选择HelloWorld，单击Add，在Server组合框中选择WebLogic 8，点击完成按钮回到Project Deployments对话框，这时服务器信息就会显示在Deployments列表中，点击确定按钮关闭对话框。 <br>(6)点击工具栏上的Run/Stop Servers下拉按钮，选择&#8220;WebLogic 8\Start&#8221;菜单，启动服务器。 <br>(7)运行IE，在地址栏输入<a href="http://localhost:7001/HelloWorld/index.html"><font color=#fece13>http://localhost:7001/HelloWorld/index.html</font></a>，即可在页面中看到&#8220;Hello World&#8221;字样。 配置 MyEclipse 的 WebLogic 9 服务器
<p>启动 Eclipse，选择&#8220;Window -&gt; Preferences&#8221;菜单，打开首选项对话框。展开 MyEclipse 下的 Application Servers 节点，点击 WebLogic 9，选中右边的 Enable 单选按钮，启用 WebLogic 服务器。配置如下： <br>①BEA home directory：C:\BEA（假定 WebLogic 安装在 C:\BEA 目录中） <br>②WebLogic installation directory：C:\BEA\WebLogic92 <br>③Admin username：user（来自 WebLogic 中的配置） <br>④Admin password：12345678（来自 WebLogic 中的配置） <br>⑤Execution domain root：C:\BEA\user_projects\domains\mydomain <br>⑥Execution server name：AdminServer <br>⑦Security policy file：C:\BEA\WebLogic92\server\lib\weblogic.policy <br>⑧JAAS login configuration file：（Null） </p>
<p>接着展开 WebLogic 9 节点，点击 JDK，在右边的 WLS JDK name 处选择 WebLogic 9 的默认 JDK。这里组合框中缺省为单独安装的 JRE。单击 Add 按钮，弹出 WebLogic -&gt; Add JVM 对话框，在 JRE 主目录处选择 WebLogic 安装文件夹中的 JDK 文件夹，我的版本为 C:\BEA\jdk150_04，程序会自动填充其他选项。单击确定按钮关闭对话框。这时候就可以在 WLS JDK name 组合框中选择 jdk150_04 了。 </p>
<p>至此，MyEclipse 中 WebLogic 9 的配置工作就算完成了。下面可以看看在 Eclipse 中能否启动 WebLogic 服务器了？安装了 MyEclipse 之后，Eclipse 工具栏中就会有一个&#8220;Run/Stop/Restart MyEclipse Application Servers&#8221;下拉按钮。点击该按钮的下拉部分，选择&#8220;WebLogic 9 -&gt; Start&#8221;菜单，即开始启动 WebLogic 了。通过查看控制台的消息，就可以检查启动是否成功，或发生什么异常。 </p>
<p>补充配置 </p>
<p>点击 Paths，在右边的 Prepend to classpath 列表框中，通过 Add JAR/ZIP 按钮，加入： <br>C:\BEA\WebLogic81\server\lib\weblogic.jar <br>C:\BEA\WebLogic81\server\lib\webservices.jar <br>如果要用到数据库，还需要把数据库的驱动类库添加进来，这里我们用 WebLogic 自带的 SQL Server 数据库驱动类库： <br>C:\BEA\WebLogic81\server\lib\mssqlserver4v65.jar </p>
<p>对常见启动问题 </p>
<p>出现 The WebLogic Server did not start up properly. 提示和 java.io.InvalidClassException 异常的问题，通常是因为 JDK 选择不当引起的，在 MyEclipse 的配置中选择的 JDK 应该必须与配置 WebLogic 时选择的 JDK 相同。当选择默认 JDK 时，也可以在 MyEclipse 中配置 BEA 的 jrockit90_150_04 这个 JDK。 <br></p>
<img src ="http://www.cnitblog.com/es2007shimiao/aggbug/73341.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/es2007shimiao/" target="_blank">方正飞鸿</a> 2011-04-14 10:20 <a href="http://www.cnitblog.com/es2007shimiao/archive/2011/04/14/73341.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>方正平台ES2007操作小技巧之隐藏表单上的ControlBar</title><link>http://www.cnitblog.com/es2007shimiao/archive/2011/04/14/73340.html</link><dc:creator>方正飞鸿</dc:creator><author>方正飞鸿</author><pubDate>Thu, 14 Apr 2011 02:12:00 GMT</pubDate><guid>http://www.cnitblog.com/es2007shimiao/archive/2011/04/14/73340.html</guid><wfw:comment>http://www.cnitblog.com/es2007shimiao/comments/73340.html</wfw:comment><comments>http://www.cnitblog.com/es2007shimiao/archive/2011/04/14/73340.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/es2007shimiao/comments/commentRss/73340.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/es2007shimiao/services/trackbacks/73340.html</trackback:ping><description><![CDATA[<font color=#00ccff size=4>两种方法<br>源码改：&lt;UC1:BBFORM id=BBForm1 runat="server" Visible="false"&gt;&lt;/UC1:BBFORM&gt; <br>或JS初始化里写：ControlBar.CtrlTable().style.display='none'; </font><br>
<img src ="http://www.cnitblog.com/es2007shimiao/aggbug/73340.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/es2007shimiao/" target="_blank">方正飞鸿</a> 2011-04-14 10:12 <a href="http://www.cnitblog.com/es2007shimiao/archive/2011/04/14/73340.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>快速开发平台ES2007 select控件 主从关联设置</title><link>http://www.cnitblog.com/es2007shimiao/archive/2011/04/14/73339.html</link><dc:creator>方正飞鸿</dc:creator><author>方正飞鸿</author><pubDate>Thu, 14 Apr 2011 01:52:00 GMT</pubDate><guid>http://www.cnitblog.com/es2007shimiao/archive/2011/04/14/73339.html</guid><wfw:comment>http://www.cnitblog.com/es2007shimiao/comments/73339.html</wfw:comment><comments>http://www.cnitblog.com/es2007shimiao/archive/2011/04/14/73339.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/es2007shimiao/comments/commentRss/73339.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/es2007shimiao/services/trackbacks/73339.html</trackback:ping><description><![CDATA[select控件 主从关联设置&nbsp; &nbsp; 例子：<br><br>主SELECT 控件<br><br>设置SELECT控件属性： <br><br>&nbsp; &nbsp; &nbsp; &nbsp; 数据源:(local)&nbsp; &nbsp; 数据源表：sys_org&nbsp; &nbsp; 值字段:orgname&nbsp; &nbsp; 显示字段：orgname<br>&nbsp; &nbsp; &nbsp; &nbsp; 主从参数：从select控件数据来源;从表数据源表;从表显示字段;从表值字段;从表中与主表的关联从表字段;<br>&nbsp; &nbsp; &nbsp; &nbsp; 如（userstr;sys_orgmenber;member;member;org;）<br><br>从SELECT 控件<br><br>设置SELECT控件属性：<br><br>&nbsp; &nbsp; 列表数据来源：userstr
<img src ="http://www.cnitblog.com/es2007shimiao/aggbug/73339.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/es2007shimiao/" target="_blank">方正飞鸿</a> 2011-04-14 09:52 <a href="http://www.cnitblog.com/es2007shimiao/archive/2011/04/14/73339.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>weblogic中间件|方正中间件|ES2007</title><link>http://www.cnitblog.com/es2007shimiao/archive/2011/04/14/73338.html</link><dc:creator>方正飞鸿</dc:creator><author>方正飞鸿</author><pubDate>Thu, 14 Apr 2011 01:49:00 GMT</pubDate><guid>http://www.cnitblog.com/es2007shimiao/archive/2011/04/14/73338.html</guid><wfw:comment>http://www.cnitblog.com/es2007shimiao/comments/73338.html</wfw:comment><comments>http://www.cnitblog.com/es2007shimiao/archive/2011/04/14/73338.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/es2007shimiao/comments/commentRss/73338.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/es2007shimiao/services/trackbacks/73338.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; webserver是用来构建网站的必要软件用来解析发布网页等功能，它是用纯java开发的。weblogic本来不是由bea发明的，是它从别人手中买过来，然后再加工扩展。目前weblogic在世界application server市场上占有最大的份额，其他还有像方正ES2007、IBM的websphere，免费的tomcat、resin等中间件。 <br>　　BEA WebLogic Server拥有处理关键Web应用系统问题所需的性能 、可扩展性和高可用性。 <br>　　与BEA WebLogic Commerce ServerTM配合使用， BEA WebLogic Server可为部署适应性个性化电子商务应用系统提供完善的解决方案。 <br>　　WebLogic长期以来一直被认为是市场上最好的J2EE工具之一。像数据库或邮件服务器一样，WebLogic Server 对于客户是不可见的，为连接在它上面的客户提供服务。WebLogic 最常用的使用方式是为在internet 或intranet 上的Web 服务提供安全、数据驱动的应用程序。WebLogic对J2EE 架构的支持：WebLogic Server 提供了对SUN J2EE 架构的支持。SUN公司的J2EE 架构是为企业级提供的一种支持分布式应用的整体框架。为集成后端系统，如ERP系统，CRM系统，以及为实现企业级计算提供了一个简易的，开放的标准。 <br>特色优势<br>　　BEA WebLogic Server具有开发和部署关键任务电子商务Web应用系统 所需的多种特色和优势，包括： <br>1）领先的标准<br>　　对业内多种标准的全面支持，包括EJB、JSB、JMS、JDBC、XML和WML，使Web应用系统的实施更为简单，并且保护了投资，同时也使基于标准的解决方案的开发更加简便。 <br>2）无限的可扩展性<br>　　BEA WebLogic Server以其高扩展的架构体系闻名于业内，包括客户机连接的共享、资源pooling以及动态网页和EJB组件群集。 <br>3）快速开发<br>　　凭借对EJB和JSP的支持，以及BEA WebLogic Server 的Servlet组件架 构体系，可加速投放市场速度。这些开放性标准与WebGain Studio配合时，可简化开发，并可发挥已有的技能，迅速部署应用系统。 <br>4）部署更趋灵活<br>　　BEA WebLogic Server的特点是与领先数据库、操作系统和Web服务器 紧密集成。 <br>5）关键任务可靠性<br>　　其容错、系统管理和安全性能已经在全球数以千记的关键任务环境中得以验证。 <br>6）体系结构<br>　　BEA WebLogic Server是专门为企业电子商务应用系统开发的。企业电子商务应用系统需要快速开发，并要求服务器端组件具有良好的灵活性和安全性，同时还要支持关键任务所必需的扩展、性能、和高可用性。BEA WebLogic Server简化了可移植及可扩展的应用系统的开发，并为其它应用 系统和系统提供了丰富的互操作性。 <br>　　凭借其出色的群集技术，BEA WebLogic Server拥有最高水平的可扩展 性和可用性。BEA WebLogic Server既实现了网页群集，也实现了EJB组件 群集，而且不需要任何专门的硬件或操作系统支持。网页群集可以实现透明的复制、负载平衡以及表示内容容错，如Web购物车；组件群集则处理复杂的复制、负载平衡和EJB组件容错，以及状态对象（如EJB实体）的恢复。 <br>　　无论是网页群集，还是组件群集，对于电子商务解决方案所要求的可扩展性和可用性都是至关重要的。共享的客户机/服务器和数据库连接以及数据缓存和EJB都增强了性能表现。这是其它Web应用系统所不具备的<br>WebLogic 服务功能介绍<br>　　1 在使用IP地址的一台计算机，或在使用集群捆绑在一起的多台计算上，或在通过代理服务器管理的多台计算机上建立拥有相同域名的不同站点. <br>　　2 部署基于J2EE 标准编写的服务器JAVA代码，包括servlet,JSP,JavaBean 和EJB。 <br>　　3 使用J2EE 扩展网络服务集成分布式系统，包括用于数据库连接的JDBC、用于信息传递的JMS、用于网络目录访问的JNDI、用于分布式事物处理的 JTA 和用于电子邮件处理的JavaMail. <br>　　4 部署使用远程方法调用（RMI）的纯Java 分布式应用程序 <br>　　5 通过使用RMI—IIOP（RMI over Internet Inter-ORB Protocol)协议部署近似CORBA的分布式应用系统。 <br>　　6 通过使用安全套接层（SSL）和Weblogic的内在支持为用户验证和授权，实现强大的安全性。 <br>　　7 通过将多个Weblogic服务器组成一个集群提供高可用性、负载均衡和容错能力。 <br>　　8 利用Java 的多平台能力在Windows NT/2000,Sun Solairs ,HP/UX 和其他Weblogic支持的操作系统上部署Weblogic服务器。 <br>　　9 在任一平台上，通过使用WebLogic直观的进行基于Web 的管理和监视工具可在网络上轻松管理一个或多个WebLogic服务器。
<img src ="http://www.cnitblog.com/es2007shimiao/aggbug/73338.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/es2007shimiao/" target="_blank">方正飞鸿</a> 2011-04-14 09:49 <a href="http://www.cnitblog.com/es2007shimiao/archive/2011/04/14/73338.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>