<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>TO BE THE BEST MAN---tenn</title>
    <description>劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。</description>
    <link>http://tenn.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>ojdbc14.jar</title>
        <author>tenn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tenn.javaeye.com">tenn</a>&nbsp;
          链接：<a href="http://tenn.javaeye.com/blog/227090" style="color:red;">http://tenn.javaeye.com/blog/227090</a>&nbsp;
          发表时间: 2008年08月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>ojdbc14.jar</p>
          <br/>
          <span style="color:red;">
            <a href="http://tenn.javaeye.com/blog/227090#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 12 Aug 2008 16:56:29 +0800</pubDate>
        <link>http://tenn.javaeye.com/blog/227090</link>
        <guid>http://tenn.javaeye.com/blog/227090</guid>
      </item>
      <item>
        <title>Documentum WDK 定制化</title>
        <author>tenn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tenn.javaeye.com">tenn</a>&nbsp;
          链接：<a href="http://tenn.javaeye.com/blog/225185" style="color:red;">http://tenn.javaeye.com/blog/225185</a>&nbsp;
          发表时间: 2008年08月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>所谓定制化就是在已有的平台基础上根据自己的业务需要进行修改，可以改得面目全非，但核心的东西是不变的，所以说定制化还是相对比较简单的开发，改壳不改核，换汤不换药。但定制化其实也是比较麻烦的，只能称之为麻烦不能称之为难。想想，如果公司让你开发一个新系统B，而这个新系统B和半年前你曾开发过的系统A很相像，是不是要在A的基础上进行定制化来完成B的开发呢？是不是很庆幸B能如此相像于A呢？唉，软件复用？所谓定制化其实就是该补该补，但不同于系统维护，那个更低级。</p>
<p>工欲善其事,必先利其器！</p>
<p>N层深的文件夹组成的包看着都脑大，我建议包不应超过5层文件夹，一个包名而已，用得着起得那么深奥吗？WDK的包也不浅，其实就三件事，Behavior Class, JSP, XML。</p>
<p><span>WDK Eclipse Plugin, 相信这个软件会让你眼前一亮，你会很开心WDK为定制化准备了这么多可复用的组件，不仅仅是这些，你会不由感慨原来看似复杂的WDK定制化可以如此的愉快。</span></p>
<p><span>下面是下载地址：</span></p>
<p><span><a href="http://sourceforge.net/project/showfiles.php?group_id=166123">http://sourceforge.net/project/showfiles.php?group_id=166123</a></span></p>
<p>&nbsp;</p>
<p><span>待续................<br /><br />[转]Configuring WDK Development Environment in&nbsp;Eclipse<span style="text-decoration: underline;"><span style="color: #800080;">
<h3>Abstract</h3>
<p class="bodyText">This configuration guide is for developers who want to use the Eclipse IDE for WDK development. It discusses one approach for configuring Eclipse for WDK development.</p>
<h3>Eclipse 3.1</h3>
<p class="bodyText"><em>Note:</em> The configuration assumes that you do not have any plugins installed and that you have a base Eclipse install.</p>
<ul>
<li>Click on the menu item &lsquo;Windows-&gt;Preferences&rsquo;. 
<ul>
<li>From the tree view on the left hand side go to &lsquo;Java-&gt;Compiler-&gt;Building&rsquo;. </li>
<li>From right hand side <strong><em>unselect (clear) the &lsquo;Scrub output folders&hellip;&rsquo; </em></strong>checkbox, which is under the &lsquo;Output folder&rsquo; section. If this option is enabled then all standard WDK/Webtop classes will be scrubbed by Eclipse and you won&rsquo;t be able to rebuild them if you don&rsquo;t have the sources. </li>
<li>Click on &lsquo;Ok&rsquo;.
<p><img src="http://developer.emc.com/developer/articles/images/eclipse_setup_scrub.gif" alt="" /></p>
</li>
</ul>
</li>
<li>Click on &lsquo;File-&gt;New Project&rsquo;. </li>
<li>Select &lsquo;Java Project&rsquo; and click on &lsquo;Next&rsquo;.<br /><img src="http://developer.emc.com/developer/articles/images/eclipse_setup_proj_type.gif" alt="" /> </li>
<li>You need to create the project in an external location. There should be a &lsquo;Checkbox&rsquo; that allows you to select this option and a &lsquo;Browse&rsquo; button that allows you to browse-select the external folder. </li>
<li>Select the WDK/Webtop web application directory as the project folder. For example, &lt;TOMCAT_HOME&gt;\webapps\webtop.<br /><img src="http://developer.emc.com/developer/articles/images/eclipse_setup_proj_location.gif" alt="" /> </li>
<li>Click on &lsquo;Next&rsquo; </li>
<li>Do not select any source folders right now. Leave the defaults. </li>
<li>Ensure that the output folder has been set to <em>WEB-INF/classes</em> folder. If not, browse and select it explicitly.<br /><img src="http://developer.emc.com/developer/articles/images/eclipse_setup_proj_source.gif" alt="" /> </li>
<li>Click on &lsquo;Finish&rsquo;. </li>
<li>Right click on the new WDK project from the standard tree view in the Java perspective and click on &lsquo;New-&gt;Folder&rsquo;. 
<ul>
<li>In the &lsquo;Folder name&rsquo; text box, name the folder (e.g wdKClasses). This folder will be added, in a later step, in the classpath of the project so that the existing WDK classes can be referenced. </li>
<li>Click on the &lsquo;Advanced&rsquo; button (towards bottom of screen) and check (select) the &lsquo;Link to folder in filesystem&rsquo; Checkbox. Browse and select the &lt;virtual-root&gt;\WEB-INF\classes folder. </li>
<li>The above procedure creates a new folder in the project space that points to the &lsquo;\WEB-INF\classes&rsquo; folder.<br /><img src="http://developer.emc.com/developer/articles/images/eclipse_setup_clfldr_2.gif" alt="" /> </li>
</ul>
</li>
<li>Right click on the new WDK project from the standard tree view in the Java perspective and click on &lsquo;Properties&rsquo;. 
<ul>
<li>From the list on the left hand side of the &lsquo;Properties&rsquo; window click on &lsquo;Java Build Path&rsquo;. </li>
<li>From the tabs on the right hand side select &lsquo;Sources&rsquo;. Select the PROJECT_NAME\custom\src as one of the source folders. You may add any number of additional source folders. </li>
<li>Now select the &lsquo;Libraries&rsquo; tab and click on &lsquo;Add External Jars&rsquo; button. Add the DFC-related jars and any other jars that you need.<br /><img src="http://developer.emc.com/developer/articles/images/eclipse_setup_jar_sel.gif" alt="" /> </li>
<li>In the previous step be sure to add the jars that contain the Java servlet and JSP classes. For Tomcat 4.1.30 on our machine, this jar was c:\Tomcat4130\common\lib\servlet.jar. For BEA 8.1 on our machine, this file was c:\bea\weblogic81\server\lib\weblogic.jar. For Tomcat 5.0.28 there are two jars, TOMCAT_HOME\common\lib\servlet-api.jar and TOMCAT_HOME\common\lib\jsp-api.jar<br /><img src="http://developer.emc.com/developer/articles/images/eclipse_setup_jar_sel_servlet.gif" alt="" /> </li>
<li>On the same tab click on the &lsquo;Add Class Folder&rsquo; button and add the folder &lsquo;wdkClasses&rsquo; that was created previously. This references all WDK\Webtop classes in the classpath. </li>
<li>Click on &lsquo;Ok&rsquo; </li>
</ul>
</li>
</ul>
<p class="bodyText">After completing this procedure, you can create your own classes and compile them. The results of compilation will directly go into the WEB-INF\classes folder just like the rest of the WDK/Webtop classes. You can also create XML configuration files and JSPs within the IDE using other Eclipse plugins for XML editing and JSP editing respectively. </p>
<p class="bodyText">&nbsp;</p>
<p>&nbsp;</p>
<p class="bodyText">[转]这样结束,我的<span class="hilite6">eclipse</span>中的webtop/src中就有这样的错误:the type comparable is not generic,it cannot be parameterized with argument.但这暂不影响工作,等用到正则表达式时,在程序中也出现这样的问题.还以为<span class="hilite6">eclipse</span>有问题,后新建工程,单独用正则表达式没问题,那很有可能是webtop中jar包的问题. 经过多次试验,只要删了fileselector1.1.jar就好了.不明白是为什么!!!</p>
<p class="bodyText">&nbsp;</p>
<p class="bodyText">&nbsp;</p>
</span></span></span></p>
          <br/>
          <span style="color:red;">
            <a href="http://tenn.javaeye.com/blog/225185#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 06 Aug 2008 20:09:50 +0800</pubDate>
        <link>http://tenn.javaeye.com/blog/225185</link>
        <guid>http://tenn.javaeye.com/blog/225185</guid>
      </item>
      <item>
        <title>Developing Documentum WebTop &amp; WDK Applications</title>
        <author>tenn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tenn.javaeye.com">tenn</a>&nbsp;
          链接：<a href="http://tenn.javaeye.com/blog/225142" style="color:red;">http://tenn.javaeye.com/blog/225142</a>&nbsp;
          发表时间: 2008年08月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><strong>Use Log4J extensions for debug and error Logging</strong><br />WDK uses a DFC &ldquo;Log4J&rdquo; extension for logging. The configuration of log4j is held in<br />&ldquo;$Documentum/Config/log4j.properties&rdquo;.<br />Define a &ldquo;logs&rdquo; directory and modify log4j.properties to use that path, not the<br />Documentum default.<br />Ensure you include your log4j.properties file in any deployment process (see later).<br />Create your own project log4j appenders and files and add them to the<br />log4j.properties. Use &ldquo;debug&rdquo;, &ldquo;error&rdquo; and &ldquo;fatal&rdquo; to categorize the error. On<br />development or problem determination run at &ldquo;debug&rdquo;; for production run at<br />&ldquo;error&rdquo;.<br /><strong>Define Coding Standards</strong><br />For multi developer teams, define coding standards to cover:<br />&bull; package naming<br />&bull; error handling<br />&bull; logging (using the log4j process described above).<br />Pay attention to the use of locale and resource bundling (strings) to support<br />internationalization.<br /><strong>Always extend when possible</strong><br />It can be tempting to copy component definition and behaviour classes. Always<br />extend unless this proves impossible.<br />Always remove unchanged XML elements from component definitions.<br /><strong>Use BOF for business logic where possible</strong><br />&bull; Enables same business logic to be &ldquo;shared&rdquo; by multiple applications<br />&bull; Reduces the changes needed when upgrading</p>
<p><strong>Use WDK Folder paths</strong><br />Although it is not required, it makes navigation easier to replicate the WDK folder<br />structure in an application&rsquo;s folders. This is helpful as WDK developers become<br />familiar with the default WDK folder structure and can then readily navigate all<br />custom application structures.<br /><strong>Use a Source Control Repository</strong><br />There are many good source control repositories, most of which integrate to<br />common IDEs.<br />Use source control to hold Java classes, JSP pages, XML component definitions,<br />log4j.properties, dbor.properties etc. This will also ease deployment problems (see<br />later).<br /><strong>Select an IDE for productivity</strong><br />There are many good free IDEs including Netbeans and Eclipse. These greatly<br />increase the productivity of developers. In particular they allow developers to link to<br />3rd party source control systems, automate the build and deployment process using<br />Ant and offer the ability to debug WDK code at runtime.<br /><strong>Use Ant to build, package and deploy</strong><br />Use Ant scripts to ensure that the application build and deploy process is automated<br />and consistent. Use Ant to package classes into JARS and to deploy all parts of a<br />WDK application (including JARs, JSP pages, XML configuration files, dbor and log4j<br />properties, NLS strings) to both application and content servers.<br />Control Documentum configuration by using available Ant extensions to install<br />docapps and run DQL and API scripts.</p>
<p><strong>Consider Development, Integration and Test Environments</strong><br />For a team of developers, it is advantageous to have individual application servers<br />for each developer. This allows application servers to be started and stopped<br />without disturbing other developers.<br />Having a Development Integration environment will allow regular builds to be made<br />from the latest code from the source control repository. Controlling the build via<br />Ant scripts make this quick and repeatable.<br />The test environment can be built after successful verification of a build on the<br />development integration environment.<br /><strong>Use WDK component definition XML to hold configuration and default values</strong><br />The WDK XML component definitions allow new XML elements to be added. The<br />behaviour class can access this information. This provides a good way to provide<br />configuration and default values that give components extra flexibility.<br /><strong>Simplify upgrades and document modified WDK XML, JAVA classes and JSP Pages</strong><br />When developing applications document all components that are extended or<br />modified. Then when upgrading to a new version of WDK or WebTop use this<br />information to access the impact of the upgrade.</p>
          <br/>
          <span style="color:red;">
            <a href="http://tenn.javaeye.com/blog/225142#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 06 Aug 2008 17:46:34 +0800</pubDate>
        <link>http://tenn.javaeye.com/blog/225142</link>
        <guid>http://tenn.javaeye.com/blog/225142</guid>
      </item>
      <item>
        <title>JSF+Spring+Hibernate+范型DAO（2）</title>
        <author>tenn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tenn.javaeye.com">tenn</a>&nbsp;
          链接：<a href="http://tenn.javaeye.com/blog/225013" style="color:red;">http://tenn.javaeye.com/blog/225013</a>&nbsp;
          发表时间: 2008年08月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>DAO层：主要使用Hibernate实现持久化等相关操作。本着基类足够强大，最好可以包罗万象，避免重发开发Dao的原则，使用范型DAO来处理对数据库进行重复性的80%增删改查操作。<br />参考代码：</p>
<pre name="code" class="java">public interface IGenericDao&lt;T, ID extends Serializable&gt; {

	public void saveOrUpdate(T t);

	public T load(Serializable ID);

	public T get(Serializable ID);
	
	public Object get(Class TClass, Serializable ID, LockMode lockMode);

	public boolean contains(T t) throws DataAccessException;

	public void delete(T t, LockMode lockMode) throws DataAccessException;

	public void delete(T t) throws DataAccessException;

	public void deleteAll(Collection&lt;T&gt; entities) throws DataAccessException;

	public List&lt;T&gt; find(String queryString, Object value)
			throws DataAccessException;

	public List&lt;T&gt; find(String queryString, Object[] values)
			throws DataAccessException;

	public List&lt;T&gt; find(String queryString) throws DataAccessException;

	public List&lt;T&gt; findByExample(Object exampleEntity, int firstResult,
			int maxResults) throws DataAccessException;

	public List&lt;T&gt; findByExample(Object exampleEntity)
			throws DataAccessException;

	public List&lt;T&gt; findByNamedParam(String queryString, String paramName,
			Object value) throws DataAccessException;

	public List&lt;T&gt; findByNamedParam(String queryString, String[] paramNames,
			Object[] values) throws DataAccessException;

	public Object load(Class TClass, Serializable ID, LockMode lockMode)
			throws DataAccessException;

	public void load(T t, Serializable ID) throws DataAccessException;

	public Object load(String TName, Serializable ID, LockMode lockMode)
			throws DataAccessException;

	public Object load(String TName, Serializable ID)
			throws DataAccessException;

	public void refresh(T t, LockMode lockMode) throws DataAccessException;

	public void refresh(T t) throws DataAccessException;

	public Serializable save(T t) throws DataAccessException;

	public void saveOrUpdate(String TName, T t) throws DataAccessException;

	public void saveOrUpdateAll(Collection&lt;T&gt; entities)
			throws DataAccessException;

	public void update(T t, LockMode lockMode) throws DataAccessException;

	public void update(T t) throws DataAccessException;

	public void update(String TName, T t, LockMode lockMode)
			throws DataAccessException;

	public void update(String TName, T t) throws DataAccessException;

	public List&lt;T&gt; loadAll();
	
	public List&lt;T&gt; loadAll(Class TClass);

	public List&lt;T&gt; list();
	
	public List&lt;T&gt; list(Class TClass);

	public PaginationSupport findPageByCriteria(
			final DetachedCriteria detachedCriteria, final int pageSize,
			final int startIndex);

	public PaginationSupport findPageByQuery(final String hsql,
			final int pageSize, final int startIndex);

}</pre>
<p>&nbsp;</p>
<pre name="code" class="java">@SuppressWarnings("unchecked")
public class GenericDao&lt;T, ID extends Serializable&gt; extends HibernateDaoSupport	implements IGenericDao&lt;T, ID&gt; {
	protected Log logger = LogFactory.getLog(getClass());

	protected Class&lt;T&gt; entityClass;

	public GenericDao() {
		
	}
	protected Class getEntityClass() {
		if (entityClass == null) {
			entityClass = (Class&lt;T&gt;) ((ParameterizedType) getClass()
					.getGenericSuperclass()).getActualTypeArguments()[0];
			logger.debug("T class = " + entityClass.getName());
		}
		return entityClass;
	}

	public void saveOrUpdate(T t) {
		this.getHibernateTemplate().saveOrUpdate(t);
	}

	public T load(Serializable ID) {

		T load = (T) getHibernateTemplate().load(getEntityClass(), ID);
		return load;
	}

	public T get(Serializable ID) {
		T load = (T) getHibernateTemplate().get(getEntityClass(), ID);
		return load;
	}
	
	public Object get(Class TClass,Serializable ID, LockMode lockMode) {
		Object vo = getHibernateTemplate().get(TClass, ID, lockMode);
		return vo;
	}

	public boolean contains(T t) throws DataAccessException {
		return getHibernateTemplate().contains(t);
	}

	public void delete(T t, LockMode lockMode) throws DataAccessException {
		getHibernateTemplate().delete(t, lockMode);
	}

	public void delete(T t) throws DataAccessException {
		getHibernateTemplate().delete(t);
	
	}
	
	public void deleteAll(Collection&lt;T&gt; entities) throws DataAccessException {
		getHibernateTemplate().deleteAll(entities);
	}
	
	public List&lt;T&gt; find(String queryString, Object value)
			throws DataAccessException {
		List&lt;T&gt; find = (List&lt;T&gt;) getHibernateTemplate().find(queryString,
				value);
		return find;
	}

	public List&lt;T&gt; find(String queryString, Object[] values)
			throws DataAccessException {
		List&lt;T&gt; find = (List&lt;T&gt;) getHibernateTemplate().find(queryString,
				values);
		return find;
	}

	public List&lt;T&gt; find(String queryString) throws DataAccessException {
		return (List&lt;T&gt;) getHibernateTemplate().find(queryString);
	}

	public List&lt;T&gt; findByExample(Object exampleEntity, int firstResult,
			int maxResults) throws DataAccessException {
		return getHibernateTemplate().findByExample(exampleEntity, firstResult,
				maxResults);
	}

	public List&lt;T&gt; findByExample(Object exampleEntity) throws DataAccessException {
		return getHibernateTemplate().findByExample(exampleEntity);
	}

	public List&lt;T&gt; findByNamedParam(String queryString, String paramName,
			Object value) throws DataAccessException {
		return getHibernateTemplate().findByNamedParam(queryString, paramName,
				value);
	}

	public List&lt;T&gt; findByNamedParam(String queryString, String[] paramNames,
			Object[] values) throws DataAccessException {
		return getHibernateTemplate().findByNamedParam(queryString, paramNames,
				values);
	}

	public Object load(Class TClass, Serializable ID, LockMode lockMode)
			throws DataAccessException {
		return getHibernateTemplate().load(TClass, ID, lockMode);
	}

	public void load(T t, Serializable ID) throws DataAccessException {
		getHibernateTemplate().load(t, ID);
	}

	public Object load(String TName, Serializable ID, LockMode lockMode)
			throws DataAccessException {
		return getHibernateTemplate().load(TName, ID, lockMode);
	}

	public Object load(String TName, Serializable ID)
			throws DataAccessException {
		return getHibernateTemplate().load(TName, ID);
	}
	
	public Object load(Class TClass, Serializable ID)
			throws DataAccessException {
		return getHibernateTemplate().load(TClass, ID);
	}

	public void refresh(T t, LockMode lockMode) throws DataAccessException {
		getHibernateTemplate().refresh(t, lockMode);
	}

	public void refresh(T t) throws DataAccessException {
		getHibernateTemplate().refresh(t);
	}

	public Serializable save(T t) throws DataAccessException {
		return getHibernateTemplate().save(t);
	}

	public void saveOrUpdate(String TName, T t) throws DataAccessException {
		getHibernateTemplate().saveOrUpdate(TName, t);
	}

	public void saveOrUpdateAll(Collection&lt;T&gt; entities)
			throws DataAccessException {
		getHibernateTemplate().saveOrUpdateAll(entities);
	}

	public void update(T t, LockMode lockMode) throws DataAccessException {
		getHibernateTemplate().update(t, lockMode);
	}

	public void update(T t) throws DataAccessException {
		getHibernateTemplate().update(t);
	}

	public void update(String TName, T t, LockMode lockMode)
			throws DataAccessException {
		getHibernateTemplate().update(TName, t, lockMode);
	}

	public void update(String TName, T t) throws DataAccessException {
		getHibernateTemplate().update(TName, t);
	}

	public List&lt;T&gt; loadAll() {
		return getHibernateTemplate().loadAll(getEntityClass());
	}

	public List&lt;T&gt; loadAll(Class TClass) {
		return getHibernateTemplate().loadAll(TClass);
	}

	public List&lt;T&gt; list() {
		Criteria criteria = getSession().createCriteria(getEntityClass());
		return criteria.list();
	}

	public List&lt;T&gt; list(Class TClass) {
		Criteria criteria = getSession().createCriteria(TClass);
		return criteria.list();
	}

	public PaginationSupport findPageByCriteria(
			final DetachedCriteria detachedCriteria, final int pageSize,
			final int startIndex) {
		return (PaginationSupport) getHibernateTemplate().execute(
				new HibernateCallback() {
					public Object doInHibernate(Session session)
							throws HibernateException {
						Criteria criteria = detachedCriteria
								.getExecutableCriteria(session);
						int totalCount = ((Integer) criteria.setProjection(
								Projections.rowCount()).uniqueResult())
								.intValue();
						criteria.setProjection(null);
						List items = criteria.setFirstResult(startIndex)
								.setMaxResults(pageSize).list();
						PaginationSupport ps = new PaginationSupport(items,
								totalCount, pageSize, startIndex);
						return ps;
					}
				}, true);
	}

	public PaginationSupport findPageByQuery(final String hsql,
			final int pageSize, final int startIndex) {
		return (PaginationSupport) getHibernateTemplate().execute(
				new HibernateCallback() {
					public Object doInHibernate(Session session)
							throws HibernateException, SQLException {
						Query query = session.createQuery(hsql);
						int totalCount = query.list().size();
						query.setFirstResult(startIndex);
						query.setMaxResults(pageSize);
						List items = query.list();
						PaginationSupport ps = new PaginationSupport(items,
								totalCount, pageSize, startIndex);
						return ps;

					}
				}, true);
	}</pre>
<p>&nbsp;VO: 主要使用hibernateSynchronizer工具自动生成，然后根据Hibernate Annotation进行修改。<br />样例代码：</p>
<pre name="code" class="java">public class WorklistSetPKVO implements Serializable {

	protected int hashCode = Integer.MIN_VALUE;

	private java.lang.Integer processstatus;
	private java.lang.Integer key;


	public WorklistSetPKVO () {}
	
	public WorklistSetPKVO (
		java.lang.Integer processstatus,
		java.lang.Integer key) {

		this.setProcessstatus(processstatus);
		this.setKey(key);
	}


	/**
	 * Return the value associated with the column: PROCESSSTATUS
	 */
	public java.lang.Integer getProcessstatus () {
		return processstatus;
	}

	/**
	 * Set the value related to the column: PROCESSSTATUS
	 * @param processstatus the PROCESSSTATUS value
	 */
	public void setProcessstatus (java.lang.Integer processstatus) {
		this.processstatus = processstatus;
	}



	/**
	 * Return the value associated with the column: KEY
	 */
	public java.lang.Integer getKey () {
		return key;
	}

	/**
	 * Set the value related to the column: KEY
	 * @param key the KEY value
	 */
	public void setKey (java.lang.Integer key) {
		this.key = key;
	}




	public boolean equals (Object obj) {
		if (null == obj) return false;
		if (!(obj instanceof WorklistSetPKVO)) return false;
		else {
			WorklistSetPKVO mObj = (WorklistSetPKVO) obj;
			if (null != this.getProcessstatus() &amp;&amp; null != mObj.getProcessstatus()) {
				if (!this.getProcessstatus().equals(mObj.getProcessstatus())) {
					return false;
				}
			}
			else {
				return false;
			}
			if (null != this.getKey() &amp;&amp; null != mObj.getKey()) {
				if (!this.getKey().equals(mObj.getKey())) {
					return false;
				}
			}
			else {
				return false;
			}
			return true;
		}
	}

	public int hashCode () {
		if (Integer.MIN_VALUE == this.hashCode) {
			StringBuilder sb = new StringBuilder();
			if (null != this.getProcessstatus()) {
				sb.append(this.getProcessstatus().hashCode());
				sb.append(":");
			}
			else {
				return super.hashCode();
			}
			if (null != this.getKey()) {
				sb.append(this.getKey().hashCode());
				sb.append(":");
			}
			else {
				return super.hashCode();
			}
			this.hashCode = sb.toString().hashCode();
		}
		return this.hashCode;
	}
}
</pre>
<p>&nbsp;</p>
<pre name="code" class="java">@Entity
@Table(name="")
public class WorklistSetVO  implements Serializable {


	// constructors
	public WorklistSetVO () {
		initialize();
	}

	/**
	 * Constructor for primary key
	 */
	public WorklistSetVO (WorklistSetPKVO id) {
		this.setId(id);
		initialize();
	}

	protected void initialize () {}



	private int hashCode = Integer.MIN_VALUE;

	// primary key
	private WorklistSetPKVO id;

	// fields
	private java.lang.Integer re;
	private java.lang.Integer upl;
	private java.lang.Integer co;
	private java.lang.Integer lscco;
	private java.lang.Integer lscnonco;



	/**
	 * Return the unique identifier of this class
     * @hibernate.id
     */
	@EmbeddedId
	public WorklistSetPKVO getId () {
		return id;
	}

	/**
	 * Set the unique identifier of this class
	 * @param id the new ID
	 */
	public void setId (WorklistSetPKVO id) {
		this.id = id;
		this.hashCode = Integer.MIN_VALUE;
	}




	/**
	 * Return the value associated with the column: RE
	 */
	public java.lang.Integer getRe () {
		return re;
	}

	/**
	 * Set the value related to the column: RE
	 * @param re the RE value
	 */
	public void setRe (java.lang.Integer re) {
		this.re = re;
	}



	/**
	 * Return the value associated with the column: UPL
	 */
	public java.lang.Integer getUpl () {
		return upl;
	}

	/**
	 * Set the value related to the column: UPL
	 * @param upl the UPL value
	 */
	public void setUpl (java.lang.Integer upl) {
		this.upl = upl;
	}



	/**
	 * Return the value associated with the column: CO
	 */
	public java.lang.Integer getCo () {
		return co;
	}

	/**
	 * Set the value related to the column: CO
	 * @param co the CO value
	 */
	public void setCo (java.lang.Integer co) {
		this.co = co;
	}



	/**
	 * Return the value associated with the column: LSCCO
	 */
	public java.lang.Integer getLscco () {
		return lscco;
	}

	/**
	 * Set the value related to the column: LSCCO
	 * @param lscco the LSCCO value
	 */
	public void setLscco (java.lang.Integer lscco) {
		this.lscco = lscco;
	}



	/**
	 * Return the value associated with the column: LSCNONCO
	 */
	public java.lang.Integer getLscnonco () {
		return lscnonco;
	}

	/**
	 * Set the value related to the column: LSCNONCO
	 * @param lscnonco the LSCNONCO value
	 */
	public void setLscnonco (java.lang.Integer lscnonco) {
		this.lscnonco = lscnonco;
	}




	public boolean equals (Object obj) {
		if (null == obj) return false;
		if (!(obj instanceof WorklistSetVO)) return false;
		else {
			WorklistSetVO worklistSetVO = (WorklistSetVO) obj;
			if (null == this.getId() || null == worklistSetVO.getId()) return false;
			else return (this.getId().equals(worklistSetVO.getId()));
		}
	}

	public int hashCode () {
		if (Integer.MIN_VALUE == this.hashCode) {
			if (null == this.getId()) return super.hashCode();
			else {
				String hashStr = this.getClass().getName() + ":" + this.getId().hashCode();
				this.hashCode = hashStr.hashCode();
			}
		}
		return this.hashCode;
	}


	public String toString () {
		return super.toString();
	}


}</pre>
<p>&nbsp;</p>
<p><br />大体结构即是如此。</p>
          <br/>
          <span style="color:red;">
            <a href="http://tenn.javaeye.com/blog/225013#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 06 Aug 2008 14:36:08 +0800</pubDate>
        <link>http://tenn.javaeye.com/blog/225013</link>
        <guid>http://tenn.javaeye.com/blog/225013</guid>
      </item>
      <item>
        <title>JSF+Spring+Hibernate+范型DAO（1）</title>
        <author>tenn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tenn.javaeye.com">tenn</a>&nbsp;
          链接：<a href="http://tenn.javaeye.com/blog/224649" style="color:red;">http://tenn.javaeye.com/blog/224649</a>&nbsp;
          发表时间: 2008年08月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>基本框架采用<span style="font-size: 10pt; font-family: &quot;Times New Roman&quot;; mso-fareast-font-family: 'ＭＳ 明朝'; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA;">JSF &ndash; MyFaces(version 1.2.0) + <span style="font-size: 10pt; font-family: &quot;Times New Roman&quot;; mso-fareast-font-family: 'ＭＳ 明朝'; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA;">Spring (version 2.5.1)&nbsp; + <span style="font-size: 10pt; font-family: &quot;Times New Roman&quot;; mso-fareast-font-family: 'ＭＳ 明朝'; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA;">Hibernate (version 3.2.5) and Hibernate Annotation (Version 3.3.0) 。</span></span></span></p>
<p><span style="font-size: 10pt; font-family: &quot;Times New Roman&quot;; mso-fareast-font-family: 'ＭＳ 明朝'; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA;"><span style="font-size: 10pt; font-family: &quot;Times New Roman&quot;; mso-fareast-font-family: 'ＭＳ 明朝'; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA;"><span style="font-size: 10pt; font-family: &quot;Times New Roman&quot;; mso-fareast-font-family: 'ＭＳ 明朝'; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA;">设计模式：MVC。<br />基本思路：根据MVC模式，将系统进行分层，将开发者进行分工（主要是前台和后台根据接口衔接联调）。JSF用于实现View和Controller。前台开发者只需要关心页面数据的显示（也就是VO属性的显示），页面的跳转和对数据更新操作的成功失败代码，他们操作的也应该只有VO或VO的集合，不应该脱离VO而只操作属性，这样会使得系统很散，逻辑性不强，给后期维护带来不必要的麻烦。他们也不应该关心数据是否准确与完整，不应该对得到的VO属性进行额外的完善。简单的说， 只需要获取--〉显示+页面跳转。Controller层需要调用对应的业务逻辑接口方法（业务逻辑层的接口方法按照业务功能进行命名）。使用Spring对业务逻辑层的事务进行控制。业务逻辑层可以根据需要对Controller层传递过来的参数进行相应的处理，调用DAO层接口方法（DAO层的接口方法按照针对一个业务逻辑方法需要对数据库进行的操作步骤来命名。例如，一个业务逻辑方法需要操作3次数据库，则需要定义三个DAO层接口方法）。在业务逻辑层中，可以对N个PO进行操作，但返回给Controller层的最好只是一个VO。业务逻辑类的划分，我是采用根据业务模块进行划分的，这种分法确实不好，没能很好体现Model层的价值。DAO层分两个包dao.common和dao.individual。 common里面放的是公用的范型DAO。当然，少不了相应的配置文件(faces-config.xml,applicationContext.xml和log4j.properties等)。至此，感觉好像少了Model层，其实是Model层被细化了，Model层分为业务Model(BO,DAO)和数据Model（VO,PO）。<br />并发控制：对于页面信息量较少的修改，采用Hibernate的乐观锁；对于页面信息量较大的修改，当一个用户进入可修改页面时，对该页面进行锁定，并记录该用户，当其他用户进入该页面时，页面可修改项和按钮被置灰并提示&ldquo;此页面正在被用户XX锁定，您只能阅览&rdquo;。<br />View层：不是很了解，暂不提。<br />Controller层：主要提下异常处理：</span></span></span><span style="font-size: 10pt; font-family: &quot;Times New Roman&quot;; mso-fareast-font-family: 'ＭＳ 明朝'; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA;"><span style="font-size: 10pt; font-family: &quot;Times New Roman&quot;; mso-fareast-font-family: 'ＭＳ 明朝'; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA;"><span style="font-size: 10pt; font-family: &quot;Times New Roman&quot;; mso-fareast-font-family: 'ＭＳ 明朝'; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA;"> <br /></span></span></span><span style="font-size: 10pt; font-family: &quot;Times New Roman&quot;; mso-fareast-font-family: 'ＭＳ 明朝'; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA;"><span style="font-size: 10pt; font-family: &quot;Times New Roman&quot;; mso-fareast-font-family: 'ＭＳ 明朝'; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA;"><span style="font-size: 10pt; font-family: &quot;Times New Roman&quot;; mso-fareast-font-family: 'ＭＳ 明朝'; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA;">
<pre name="code" class="java">try {   
                       
} catch (Exception e) {   
facesMessage = new FacesMessage(FacesMessage.SEVERITY_ERROR,   
        "ERROR:", ErrorMessage.getErrorString("processing_error"));   
FacesContext.getCurrentInstance().addMessage(null, facesMessage);   
logger.error(ExceptionUtils.getFullStackTrace(e));   
return SettlementConstants.FORWARD_ERROR;   
}  
</pre>
<p>&nbsp;</p>
<p>业务逻辑层：<br />applicationContext.xml</p>
<pre name="code" class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;  
&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"   
                       "http://www.springframework.org/dtd/spring-beans.dtd"&gt;  
&lt;beans&gt;  
 &lt;!--  RESOURCE DEFINITIONS  --&gt;  
 &lt;bean class="org.springframework.jndi.JndiObjectFactoryBean" id="dataSource"&gt;  
  &lt;property name="jndiName" value=""/&gt;  
 &lt;/bean&gt;  
 &lt;bean  
  class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" id="sessionFactory"&gt;  
  &lt;property name="configurationClass"&gt;  
   &lt;value&gt;org.hibernate.cfg.AnnotationConfiguration&lt;/value&gt;  
  &lt;/property&gt;  
  &lt;property name="dataSource"&gt;  
   &lt;ref bean="dataSource"/&gt;  
  &lt;/property&gt;  
  &lt;property name="annotatedPackages"&gt;  
   &lt;list&gt;  
    &lt;value&gt;&lt;/value&gt;  
   &lt;/list&gt;  
  &lt;/property&gt;  
  &lt;property name="annotatedClasses"&gt;  
   &lt;list&gt;  
    &lt;value&gt;&lt;/value&gt;  
   &lt;/list&gt;  
  &lt;/property&gt;  
  &lt;property name="hibernateProperties"&gt;  
   &lt;props&gt;  
    &lt;prop key="hibernate.dialect"&gt;org.hibernate.dialect.Oracle10gDialect&lt;/prop&gt;  
    &lt;prop key="hibernate.query.factory_class"&gt;org.hibernate.hql.classic.ClassicQueryTranslatorFactory&lt;/prop&gt;  
    &lt;prop key="hibernate.connection.release_mode"&gt;auto&lt;/prop&gt;  
    &lt;prop key="hibernate.transaction.auto_close_session"&gt;false&lt;/prop&gt;  
    &lt;prop key="hibernate.connection.autocommit"&gt;false&lt;/prop&gt;  
    &lt;prop key="hibernate.show_sql"&gt;false&lt;/prop&gt;  
   &lt;/props&gt;  
  &lt;/property&gt;  
 &lt;/bean&gt;  
 &lt;bean  
  class="org.springframework.orm.hibernate3.HibernateTransactionManager" id="sssTxManager"&gt;  
  &lt;property name="sessionFactory"&gt;  
   &lt;ref bean="sessionFactory"/&gt;  
  &lt;/property&gt;  
 &lt;/bean&gt;  
 &lt;bean abstract="true"  
  class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" id="baseTxBO"&gt;  
  &lt;property name="transactionManager" ref="sssTxManager"/&gt;  
  &lt;property name="proxyTargetClass" value="true"/&gt;  
  &lt;property name="transactionAttributes"&gt;  
   &lt;props&gt;  
    &lt;prop key="get*"&gt;PROPAGATION_REQUIRED,readOnly&lt;/prop&gt;  
    &lt;prop key="save*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;  
    &lt;prop key="update*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;  
    &lt;prop key="remove*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;  
    &lt;prop key="*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;  
   &lt;/props&gt;  
  &lt;/property&gt;  
 &lt;/bean&gt;  
 &lt;!--  BO DEFINITIONS  --&gt;  
  
 &lt;bean id="managerMenuBO" parent="baseTxBO"&gt;  
  &lt;property name="target"&gt;  
   &lt;bean class="ManagerMenuBOImpl"&gt;  
    &lt;property name="genericDao"&gt;  
     &lt;ref bean="genericDao"/&gt;  
    &lt;/property&gt;  
    &lt;property name="managerMenuDAO"&gt;  
     &lt;ref bean="managerMenuDAO"/&gt;  
    &lt;/property&gt;  
    &lt;property name="settleAppJDBCSupportDAO"&gt;  
     &lt;ref bean="settleAppJDBCSupportDAO"/&gt;  
    &lt;/property&gt;  
   &lt;/bean&gt;  
  &lt;/property&gt;  
 &lt;/bean&gt;  
  
 &lt;bean id="dropdownListBO" parent="baseTxBO"&gt;  
  &lt;property name="target"&gt;  
   &lt;bean class="DropdownListBOImpl"&gt;  
    &lt;property name="dropdownListDAO"&gt;  
     &lt;ref bean="dropdownListDAO"/&gt;  
    &lt;/property&gt;  
   &lt;/bean&gt;  
  &lt;/property&gt;  
 &lt;/bean&gt;  
 &lt;!--  DAO DEFINITIONS  --&gt;  
 &lt;bean class="GenericDao" id="genericDao"&gt;  
  &lt;property name="sessionFactory"&gt;  
   &lt;ref bean="sessionFactory"/&gt;  
  &lt;/property&gt;  
 &lt;/bean&gt;  
  
 &lt;bean class="ManagerMenuDAOImpl" id="managerMenuDAO" parent="genericDao"/&gt;     
 &lt;bean class="DropdownListDAOImpl" id="dropdownListDAO" parent="genericDao"/&gt;  
    
 &lt;bean class="SettleAppJDBCSupportDAOImpl" id="settleAppJDBCSupportDAO"&gt;  
  &lt;property name="dataSource"&gt;  
   &lt;ref bean="dataSource"/&gt;  
  &lt;/property&gt;  
 &lt;/bean&gt;  
&lt;/beans&gt;  
</pre>
<p>&nbsp;&nbsp;样例代码：</p>
<pre name="code" class="java">public interface ManagerMenuBO {   
    // User Authority Application Screen start   
    public List&lt;UserAuthorityVO&gt; getUserAuthorityList();   
    public boolean getUserInTemp(String soeid);   
    public boolean getUserInfo(String soeid);   
    public void saveUserAuthorityTemp(UserAuthorityTempVO userAuthorityTempVO);   
    // User Authority Application Screen end   
       
    // User Authority Update Review Screen start   
    public List&lt;UserAuthorityTempVO&gt; getUserAuthorityTempList(String appType, String updater);   
    public void updateUserAuthorityTemp(List&lt;UserAuthorityTempVO&gt; list, String appType, String reviewType);   
    // User Authority Update Review Screen end   
       
    // Worklist Set   
    public List&lt;WorklistSetVO&gt; getWorklistSet();   
    public void saveWorklistSet(List&lt;WorklistSetVO&gt; list);   
       
    // Contact Table Set   
    public List&lt;ContactTableVO&gt; getContactTableSet();   
    public void saveContactTableSet(List&lt;ContactTableVO&gt; list);   
       
    // Matrix Set   
    public List&lt;MatrixSetVO&gt; getMatrixSet();   
    public void saveMatrixSet(MatrixSetVO matrixSetVO);   
       
    // Data Extraction   
    public HashMap getDataExtraction(Date startDate, Date endDate);   
       
    // Manual Batch Last Update Date   
    public HashMap getMBLastUpdateDate();   
       
    // Manual Batch Execute   
    public String doMBExcete();   
  
}  
</pre>
<p>&nbsp;</p>
<pre name="code" class="java">@SuppressWarnings("unchecked")   
public class ManagerMenuBOImpl implements ManagerMenuBO {   
       
    private IGenericDao genericDao;   
  
    public IGenericDao getGenericDao() {   
        return genericDao;   
    }   
  
    public void setGenericDao(IGenericDao genericDao) {   
        this.genericDao = genericDao;   
    }   
       
    private ManagerMenuDAO managerMenuDAO;   
           
    public ManagerMenuDAO getManagerMenuDAO() {   
        return managerMenuDAO;   
    }   
  
    public void setManagerMenuDAO(ManagerMenuDAO managerMenuDAO) {   
        this.managerMenuDAO = managerMenuDAO;   
    }   
       
    private SettleAppJDBCSupportDAO settleAppJDBCSupportDAO;   
       
    public SettleAppJDBCSupportDAO getSettleAppJDBCSupportDAO() {   
        return settleAppJDBCSupportDAO;   
    }   
  
    public void setSettleAppJDBCSupportDAO(   
            SettleAppJDBCSupportDAO settleAppJDBCSupportDAO) {   
        this.settleAppJDBCSupportDAO = settleAppJDBCSupportDAO;   
    }   
  
    // User Authority Application Screen start   
    public List&lt;UserAuthorityVO&gt; getUserAuthorityList(){   
        return genericDao.list(UserAuthorityVO.class);   
    }   
       
    public boolean getUserInTemp(String soeid){   
        UserAuthorityTempVO userAuthorityTempVO = (UserAuthorityTempVO)genericDao.get(UserAuthorityTempVO.class, soeid, LockMode.NONE);   
        if(userAuthorityTempVO == null){   
            return false;   
        }   
        else{   
            return true;   
        }   
    }   
       
    public boolean getUserInfo(String soeid){   
        UserAuthorityVO userAuthorityVO = (UserAuthorityVO)genericDao.get(UserAuthorityVO.class, soeid, LockMode.NONE);   
        if(userAuthorityVO == null){   
            return false;   
        }   
        else{   
            return true;   
        }   
    }   
       
    public void saveUserAuthorityTemp(UserAuthorityTempVO userAuthorityTempVO){   
        genericDao.saveOrUpdate(userAuthorityTempVO);   
    }   
    // User Authority Application Screen end   
       
    // User Authority Update Review Screen start   
    public List&lt;UserAuthorityTempVO&gt; getUserAuthorityTempList(String appType, String updater){   
        return managerMenuDAO.getUserAuthorityTempList(appType, updater);   
    }   
       
    public void updateUserAuthorityTemp(List&lt;UserAuthorityTempVO&gt; list, String appType, String reviewType){   
        managerMenuDAO.updateUserAuthorityTemp(list, appType, reviewType);     
    }   
    // User Authority Update Review Screen end   
       
    // Worklist Set   
    public List&lt;WorklistSetVO&gt; getWorklistSet(){     
        return genericDao.loadAll(WorklistSetVO.class);   
    }   
       
    public void saveWorklistSet(List&lt;WorklistSetVO&gt; list){   
        int j = list.size();   
        for(int i=0; i&lt;j; i++){   
            WorklistSetVO worklistSetVO = list.get(i);   
            genericDao.saveOrUpdate(worklistSetVO);   
        }   
    }   
       
    //   Contact Table Set   
    public List&lt;ContactTableVO&gt; getContactTableSet(){   
        return genericDao.loadAll(ContactTableVO.class);   
    }   
       
    public void saveContactTableSet(List&lt;ContactTableVO&gt; list){   
        int j = list.size();   
        for(int i=0; i&lt;j; i++){   
            ContactTableVO contactTableVO = list.get(i);   
            genericDao.saveOrUpdate(contactTableVO);   
        }   
    }   
       
    //   Matrix Set   
    public List&lt;MatrixSetVO&gt; getMatrixSet(){   
        return genericDao.loadAll(MatrixSetVO.class);   
    }   
       
    public void saveMatrixSet(MatrixSetVO matrixSetVO){   
        genericDao.saveOrUpdate(matrixSetVO);   
    }   
       
    //   Data Extraction   
    public HashMap getDataExtraction(Date startDate, Date endDate){   
        return managerMenuDAO.getDataExtraction(startDate, endDate);   
    }   
       
    // Manual Batch Last Update Date   
    public HashMap getMBLastUpdateDate(){   
        return settleAppJDBCSupportDAO.getMBLastUpdateDate();   
    }   
       
    // Manual Batch Execute   
    public String doMBExcete(){   
        return settleAppJDBCSupportDAO.doMBExcete();   
    }   
       
}  
</pre>
<p>&nbsp;</p>
</span></span></span></p>
          <br/>
          <span style="color:red;">
            <a href="http://tenn.javaeye.com/blog/224649#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 05 Aug 2008 16:06:35 +0800</pubDate>
        <link>http://tenn.javaeye.com/blog/224649</link>
        <guid>http://tenn.javaeye.com/blog/224649</guid>
      </item>
      <item>
        <title>男人三十岁前</title>
        <author>tenn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tenn.javaeye.com">tenn</a>&nbsp;
          链接：<a href="http://tenn.javaeye.com/blog/218714" style="color:red;">http://tenn.javaeye.com/blog/218714</a>&nbsp;
          发表时间: 2008年07月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>1,事业永远第一 <br />　　虽然金钱不是万能的,但没有钱是万万不能的,虽然这句话很俗,但绝对有道理,所以30岁之前,请把你大部分精力放在你的事业上. </p>
<p><br />2,别把钱看得太重 <br />　　不要抱怨自己现在工资低,银行存款4位数以下,看不到前途,现在要做的就是努力学习,即使你文凭再高,怎么把理论运用到实践还是需要一个很长的锻炼过程,社会永远是一所最博大的大学,它让你学到的知识远比你在学校学到的重要得多,所以同样,你也别太介意学历低.30岁之前靠自己能力买车买房的人还是极少. </p>
<p><br />3,学会体谅父母 <br />　　别嫌他们唠叨,等你为人父了你就知道可怜天下父母心,在他们眼里你还是个孩子,但他们真的老了,现在得你哄他们开心了,也许只要你的一个电话,一点小礼物,就可以让他们安心,很容易做到. </p>
<p><br />4,交上好朋友 <br />　　朋友对你一生都影响重大,不要去结识太多酒肉朋友,至少得有一个能在关键时刻帮助你的朋友,如果遇到这么一个人,就好好把握,日后必定有用,不管他现在是富还是穷. </p>
<p><br />5,别太相信爱情 <br />　　心中要有爱,但请别说也别相信那些琼瑶阿姨小说里面的山盟海誓,世上本无永恒,重要的是责任,但女人心海底针,心变了,一切都成枉然,你要做的就是该出手时就出手,该放手时别犹豫.30岁之前的爱情不是假的,但只是大多数人都没有能真正把握好的能力,所以学会量力而行. </p>
<p><br />6,别担心至今还保留初吻 <br />　　爱情不在多而在精,别以为自己20多岁还没碰过女孩子就害怕自己永远找不到老婆.以后你会有很多机会认识女孩子,要知道这个社会虽然男人多于女人,但现实是女人其实比男人更担心这个问题.男人30一枝花,你在升值而不是贬值,成熟的爱情往往更美丽更长久,所以不要像疯狗一样看到女孩就想追,学会品味寂寞. </p>
<p><br />7,不要沉迷于任何东西 <br />　　所谓玩物而丧志,网络游戏是你在出校门之前玩的,你现在没有多余的时间和精力花费到这上面,否则你透支的东西以后都得偿还.一个人要有兴趣,爱好,但请分清楚轻重. </p>
<p><br />8,年轻没有失败 <br />　　不要遇到挫折就灰心,年轻人要时刻保持积极向上的态度.失败了,重来过;失去了，再争取别的。错过了，要分析，下次来,要把握；幼稚了，下次，成熟点。不要紧，会好的，哪怕到了极点，也不要放弃，相信一定可以挺过去。不要消极，会好的。曾经的错，过去了，总不能回味在过去。现在的，很好，累完了，很舒服。不要伤，总会有人在支撑你。 </p>
<p><br />9,不要轻易崇拜或者鄙视一个人 <br />　　人都有偶像,但请拥有你自己的个性.不要刻意去模仿一个人,因为你就是你,是唯一的,独一无二的,要有自信.也不要全盘否定一个人,每个人是有价值的,如果你不能理解他,也请学会接受. </p>
<p><br />10,要有责任心. <br />　　不管你曾经怎样,但请从现在开始做一个正直的人.男人要有责任心,无论是工作还是生活上,一个有责任心的人才能让别人有安全感,才能让别人觉得你是一个值得信赖的人.我们不要懦弱,但请不要伤害爱你的人和你爱的人,尤其是善良的女孩,因为这个世界善良的女孩不多了,即使不想拥有,但也请让她保持她美丽的心. </p>
<p><br />11,男人的外貌并不重要. <br />　　不要为自己的长相身高而过分担心,一个心地善良,为人正直的男人远比那些空有英俊相貌,挺拔身材但内心龌龊的男人要帅得多.如果有人以貌取人,请不要太在意,因为你不用去为一个低级趣味的人而难过. </p>
<p><br />12,学会保护身体 <br />　　不要以为现在抽烟喝酒,熬夜通宵也没什么事.那是因为你的身体正处于你一生的黄金时段.30岁以后你就能明白力不从心这个词的意义了,身体是革命的本钱,没有好的身体什么也做不了,所以要尽量让自己过有规律的健康生活. </p>
<p><br />13,别觉得一事无成. <br />　　你现在还没有资格谈成功,当然如果你有千万资产的除外.一开始太固定的职业并不一定是好事,或许在不断的改行当中,你会学到更丰富的知识,而且可以挖掘出自己的潜能,找到最适合你的工作. </p>
<p><br />14,请认真工作 <br />　　即使你现在的工作再怎么无聊再怎么低级,也请你认真去对待,要知道任何成功人士都是从最小的事做起,或许你现在学不到多么了不起的知识,但起码你要学会良好的工作态度和工作方法,这对以后很重要. </p>
<p><br />15,请认真对待感情. <br />　　不要羡慕那些换女人像换鞋一样的花花公子,逢场作戏的爱情只是让你浪费时间浪费精力,一个人最痛苦的不是找不到爱人,而是心中没有了爱,当你把我爱你 3 个字变成你最容易说的一句话时,那么你在爱情的世界里已经很难找到真正的幸福了.爱情没有公平,总有一个人比对方付出得多,即使没有结果,也别觉得不值, 因为你的付出不光是为了她,也是为了你自己的爱,为爱付出是很可贵的,赞自己一下. </p>
<p><br />16.请留一点童心 <br />　　在内心深处,哪怕只是一个很小的角落里,请保持一份童心,不是幼稚,但有的时候单纯一点会让你很快乐.所以不要太计较得失,生活本无完美. </p>
          <br/>
          <span style="color:red;">
            <a href="http://tenn.javaeye.com/blog/218714#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 23 Jul 2008 20:35:52 +0800</pubDate>
        <link>http://tenn.javaeye.com/blog/218714</link>
        <guid>http://tenn.javaeye.com/blog/218714</guid>
      </item>
      <item>
        <title>Some Notes</title>
        <author>tenn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tenn.javaeye.com">tenn</a>&nbsp;
          链接：<a href="http://tenn.javaeye.com/blog/159196" style="color:red;">http://tenn.javaeye.com/blog/159196</a>&nbsp;
          发表时间: 2008年01月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">(Class&lt;T&gt; ) ((ParameterizedType) getClass()   
.getGenericSuperclass()).getActualTypeArguments()[0];  
</pre><p>只有定义的参数类型在编译时而不是运行时，反射泛型参数才会起作用，否则会抛出：</p><p><span><span>java.lang.Class&nbsp;cannot&nbsp;be&nbsp;cast&nbsp;to&nbsp;java.lang.reflect.<span class="hilite1">ParameterizedType</span></span></span></p>
          <br/>
          <span style="color:red;">
            <a href="http://tenn.javaeye.com/blog/159196#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 24 Jan 2008 20:23:12 +0800</pubDate>
        <link>http://tenn.javaeye.com/blog/159196</link>
        <guid>http://tenn.javaeye.com/blog/159196</guid>
      </item>
      <item>
        <title>easylink webservice(FaxService) test</title>
        <author>tenn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tenn.javaeye.com">tenn</a>&nbsp;
          链接：<a href="http://tenn.javaeye.com/blog/147954" style="color:red;">http://tenn.javaeye.com/blog/147954</a>&nbsp;
          发表时间: 2008年01月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="code_title">mstsc.exe</div><div class="code_title">java 代码</div><div class="dp-highlighter"><ol class="dp-j"><li class="alt"><span><span class="keyword">package</span><span>&nbsp;com.easylink.services.sample; &nbsp;&nbsp;</span></span> </li><li><span>&nbsp;&nbsp;</span> </li><li class="alt"><span class="keyword">import</span><span>&nbsp;java.io.File; &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;</span> </li><li class="alt"><span class="keyword">import</span><span>&nbsp;testpackage.SendFaxResponse; &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;</span> </li><li class="alt"><span class="keyword">import</span><span>&nbsp;com.easylink.services.ELSException; &nbsp;&nbsp;</span> </li><li><span class="keyword">import</span><span>&nbsp;com.easylink.services.ELSFaxManager_test; &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;</span> </li><li><span class="comment">/** </span>&nbsp; </li><li class="alt"><span><span class="comment">&nbsp;*&nbsp;<strong>SendFax&nbsp;-&nbsp;Send&nbsp;a&nbsp;fax&nbsp;to&nbsp;the&nbsp;specified&nbsp;destination&nbsp;fax</strong> </span>&nbsp;</span> </li><li><span><span class="comment">&nbsp;*&nbsp;@author&nbsp;zhu&nbsp;jiyun </span>&nbsp;</span> </li><li class="alt"><span><span class="comment">&nbsp;*&nbsp;@version&nbsp;1.0 </span>&nbsp;</span> </li><li><span><span class="comment">&nbsp;*/</span><span>&nbsp;&nbsp;</span></span> </li><li class="alt"><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;SendFax_test&nbsp;{ &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;main(String[]&nbsp;args)&nbsp;</span><span class="keyword">throws</span><span>&nbsp;Exception&nbsp;{ &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{ &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp; </li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;the&nbsp;required&nbsp;variable&nbsp;with&nbsp;'*';&nbsp; </span>&nbsp;</span> </li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span> </li><li class="alt"><span>&nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp; </li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Host* </span>&nbsp;</span> </li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Secured&nbsp;production&nbsp;fax&nbsp;endpoint:faxadmin.easylink.com </span>&nbsp;</span> </li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;host&nbsp;=&nbsp;</span><span class="string">&quot;webservicetest.easylink.com&quot;</span><span>;&nbsp;</span><span class="comment">//Test&nbsp;system&nbsp;secured&nbsp;fax&nbsp;endpoint </span><span>&nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp; </li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;port* </span>&nbsp;</span> </li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;The&nbsp;port&nbsp;of&nbsp;the&nbsp;destination&nbsp;service.&nbsp;ie&nbsp;443&nbsp;unless&nbsp;using&nbsp;a&nbsp;proxy </span>&nbsp;</span> </li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;port&nbsp;=&nbsp;</span><span class="string">&quot;443&quot;</span><span>; &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp; </li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;email* </span>&nbsp;</span> </li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;The&nbsp;email&nbsp;address&nbsp;of&nbsp;the&nbsp;registered&nbsp;account </span>&nbsp;</span> </li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;emailAddress&nbsp;=&nbsp;</span><span class="string">&quot;tenn911@163.com&quot;</span><span>; &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp; </li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;password* </span>&nbsp;</span> </li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Password&nbsp;for&nbsp;the&nbsp;registered&nbsp;account </span>&nbsp;</span> </li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;password&nbsp;=&nbsp;</span><span class="string">&quot;password&quot;</span><span>; &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp; </li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;destination* </span>&nbsp;</span> </li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Destination&nbsp;fax&nbsp;number </span>&nbsp;</span> </li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;destination&nbsp;=&nbsp;</span><span class="string">&quot;8641139778161&quot;</span><span>; &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//trustStorePath* </span><span>&nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;trustStorePath&nbsp;=&nbsp;</span><span class="string">&quot;c:\\testEasyLink\\easysendfax.keystore&quot;</span><span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;AcctCode </span><span>&nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;accountCode&nbsp;=&nbsp;</span><span class="string">&quot;&quot;</span><span>; &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;UserCode </span><span>&nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;userCode&nbsp;=&nbsp;</span><span class="string">&quot;&quot;</span><span>; &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;TSI&nbsp;-&nbsp;Fax&nbsp;Machine&nbsp;Identification&nbsp;String </span><span>&nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;TSI&nbsp;=&nbsp;</span><span class="string">&quot;&quot;</span><span>; &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;alternateDeliveryNotice&nbsp;-&nbsp;Delivery&nbsp;Notification&nbsp;EMAIL </span><span>&nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;alternateDeliveryNotice&nbsp;=&nbsp;</span><span class="string">&quot;&quot;</span><span>; &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;deliveryNoticeType&nbsp;=&nbsp;</span><span class="string">&quot;ALL&quot;</span><span>; &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;faxResolution&nbsp;=&nbsp;</span><span class="string">&quot;Normal&quot;</span><span>; &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;to&nbsp;-&nbsp;Value&nbsp;for&nbsp;the&nbsp;TO&nbsp;field </span><span>&nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;to&nbsp;=&nbsp;</span><span class="string">&quot;&quot;</span><span>; &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;from&nbsp;=&nbsp;emailAddress; &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//Setup&nbsp;the&nbsp;attachments* </span><span>&nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;filePath&nbsp;=&nbsp;</span><span class="string">&quot;c:\\testEasyLink\\testEasyLink.txt&quot;</span><span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File[]&nbsp;attachments&nbsp;=&nbsp;getAttachments(filePath); &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ELSFaxManager_test&nbsp;efm&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;ELSFaxManager_test(); &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;efm.setHost(host); &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;efm.setPort(Integer.parseInt(port)); &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;efm.setEmailAddress(emailAddress); &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;efm.setPassword(password); &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li><li class="alt"><span class="comment">//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Run&nbsp;in&nbsp;secured&nbsp;mode </span><span>&nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;efm.setSecured(</span><span class="keyword">true</span><span>); &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;efm.setTrustStoreName(trustStorePath); &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SendFaxResponse&nbsp;rs&nbsp;=&nbsp;efm.sendFax(destination, &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;accountCode, &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userCode, &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TSI, &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alternateDeliveryNotice, &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deliveryNoticeType, &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;faxResolution, &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to, &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from, &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attachments); &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span class="string">&quot;Transaction&nbsp;Id&nbsp;&nbsp;:&nbsp;&quot;</span><span>&nbsp;+&nbsp;rs.getTransactionId()); &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(ELSException&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span class="string">&quot;Exception&nbsp;message&nbsp;&quot;</span><span>+e.getMessage()); &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;File[]&nbsp;getAttachments(String&nbsp;filePath)&nbsp;{ &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;filePaths&nbsp;=&nbsp;filePath.split(</span><span class="string">&quot;;&quot;</span><span>); &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File[]&nbsp;files&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;File[filePaths.length]; &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span>&nbsp;cntr=</span><span class="number">0</span><span>; &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>(</span><span class="keyword">int</span><span>&nbsp;i=</span><span class="number">0</span><span>;i </span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;fPath&nbsp;=&nbsp;filePaths[i]; &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;files[cntr++]&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;File(fPath); &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;files; &nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li><li class="alt"><span>&nbsp;&nbsp;</span> </li><li><span>&nbsp;&nbsp;</span> </li><li class="alt"><span>} &nbsp;&nbsp;</span> </li></ol></div>
          <br/>
          <span style="color:red;">
            <a href="http://tenn.javaeye.com/blog/147954#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 14 Jan 2008 17:45:34 +0800</pubDate>
        <link>http://tenn.javaeye.com/blog/147954</link>
        <guid>http://tenn.javaeye.com/blog/147954</guid>
      </item>
      <item>
        <title>[转]使用Axis发布简单的Web服务 </title>
        <author>tenn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tenn.javaeye.com">tenn</a>&nbsp;
          链接：<a href="http://tenn.javaeye.com/blog/148464" style="color:red;">http://tenn.javaeye.com/blog/148464</a>&nbsp;
          发表时间: 2007年12月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>使用Axis，要发布一个Web服务非常简单，简直不能再简单了，尽管看起来过程和相关代码有些长。我这个帖子里用到了这些软件：Axis 1.1、Eclipse 2.1和Eclipse的Tomcat插件2.2（<a href="http://www.sysdeo.com/eclipse/tomcatPlugin.html">Sysdeo Tomcat plugin</a>）。发布的方法如下：</p>
<p>我要发布的服务是一个图书商店，公布的方法有添加图书addBook、列表图书listBooks、删除图书deleteBook等等，为简单起见这里就只发布一个添加图书方法，因为其他方法的发布是类似的。</p>
<p>1、首先在Eclipse里新建一个名为bookstore的Tomcat工程，注意要安装了前面说的Tomcat插件才有这个选项的。如果没有安装可以建立一个java工程，然后手动建立必要的目录结构（WEB-INF等），并在Tomcat的server.xml里手动增加与项目对应的&lt;context&gt;项。</p>
<p>2、接下来建立图书类（com.bookstore.model.Book），图书有名称、ISDN号和页数三个属性，这是一个Bean类，代码如下：</p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /><span style="COLOR: #000000">package&nbsp;com.bookstore.model;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />public&nbsp;class&nbsp;Book&nbsp;{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;name;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;ISDN;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;page;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;String&nbsp;getISDN()&nbsp;{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;ISDN;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;String&nbsp;getName()&nbsp;{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;name;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;getPage()&nbsp;{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;page;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setISDN(String&nbsp;string)&nbsp;{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ISDN&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;string;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setName(String&nbsp;string)&nbsp;{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;string;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setPage(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i)&nbsp;{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;page&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;i;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />}<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /></span></div>
</div>
<p>&nbsp;</p>
<p>3、接下来建立用来提供服务的类（com.bookstore.BookSvc），这个类就是实际的功能类了，它里面只有一个public的addBook()方法，而它的参数只有一个就是要添加的图书。代码如下：</p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /><span style="COLOR: #000000">package&nbsp;com.bookstore;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />import&nbsp;com.bookstore.model.Book;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />public&nbsp;class&nbsp;BookSvc&nbsp;{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;addBook(Book&nbsp;book){<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">here&nbsp;you&nbsp;save&nbsp;a&nbsp;book&nbsp;into&nbsp;database</span><span style="COLOR: #008000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">Book&nbsp;has&nbsp;been&nbsp;added.</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />}<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /></span></div>
</div>
<p>&nbsp;</p>
<p>4、现在，把下载来的Axis解压缩到一个文件夹，这里假设你解到C:\axis-1_1。把C:\axis-1_1\webapps\axis\WEB-INF\lib目录下的所有.jar文件复制到你的这个web应用程序的WEB-INF\lib下，再把C:\axis-1_1\webapps\axis\WEB-INF目录下的web.xml复制到你的web应用程序的WEB-INF下。这个步骤相当于在你的web应用程序中配置了Axis。</p>
<p>5、为了让Axis知道你要发布哪些服务，你得在WEB-INF下建立一个名为server-config.wsdd的文件，内容如下：</p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /><span style="COLOR: #0000ff">&lt;?</span><span style="COLOR: #ff00ff">xml&nbsp;version=&quot;1.0&quot;&nbsp;encoding=&quot;UTF-8&quot;</span><span style="COLOR: #0000ff">?&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">deployment&nbsp;</span><span style="COLOR: #ff0000">xmlns</span><span style="COLOR: #0000ff">=&quot;http://xml.apache.org/axis/wsdd/&quot;</span><span style="COLOR: #ff0000">&nbsp;xmlns:java</span><span style="COLOR: #0000ff">=&quot;http://xml.apache.org/axis/wsdd/providers/java&quot;</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">globalConfiguration</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;adminPassword&quot;</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">=&quot;admin&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;attachments.Directory&quot;</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">=&quot;C:\eclipse\workspace\bookstore\WEB-INF\attachments&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;attachments.implementation&quot;</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">=&quot;org.apache.axis.attachments.AttachmentsImpl&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;sendXsiTypes&quot;</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">=&quot;true&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;sendMultiRefs&quot;</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">=&quot;true&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;sendXMLDeclaration&quot;</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">=&quot;true&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;axis.sendMinimizedElements&quot;</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">=&quot;true&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">requestFlow</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">handler&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">=&quot;java:org.apache.axis.handlers.JWSHandler&quot;</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;scope&quot;</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">=&quot;session&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">handler</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">handler&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">=&quot;java:org.apache.axis.handlers.JWSHandler&quot;</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;scope&quot;</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">=&quot;request&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;extension&quot;</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">=&quot;.jwr&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">handler</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">requestFlow</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">globalConfiguration</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">handler&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;LocalResponder&quot;</span><span style="COLOR: #ff0000">&nbsp;type</span><span style="COLOR: #0000ff">=&quot;java:org.apache.axis.transport.local.LocalResponder&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">handler&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;Authenticate&quot;</span><span style="COLOR: #ff0000">&nbsp;type</span><span style="COLOR: #0000ff">=&quot;java:org.apache.axis.handlers.SimpleAuthenticationHandler&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">handler&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;URLMapper&quot;</span><span style="COLOR: #ff0000">&nbsp;type</span><span style="COLOR: #0000ff">=&quot;java:org.apache.axis.handlers.http.URLMapper&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">service&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;Version&quot;</span><span style="COLOR: #ff0000">&nbsp;provider</span><span style="COLOR: #0000ff">=&quot;java:RPC&quot;</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;allowedMethods&quot;</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">=&quot;getVersion&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;className&quot;</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">=&quot;org.apache.axis.Version&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">service</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">service&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;BookSvc&quot;</span><span style="COLOR: #ff0000">&nbsp;provider</span><span style="COLOR: #0000ff">=&quot;java:RPC&quot;</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;allowedMethods&quot;</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">=&quot;*&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;className&quot;</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">=&quot;com.bookstore.BookSvc&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">service</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">service&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;AdminService&quot;</span><span style="COLOR: #ff0000">&nbsp;provider</span><span style="COLOR: #0000ff">=&quot;java:MSG&quot;</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;allowedMethods&quot;</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">=&quot;AdminService&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;enableRemoteAdmin&quot;</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">=&quot;false&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;className&quot;</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">=&quot;org.apache.axis.utils.Admin&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">namespace</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">http://xml.apache.org/axis/wsdd/</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">namespace</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">service</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">transport&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;local&quot;</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">responseFlow</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">handler&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">=&quot;LocalResponder&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">responseFlow</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">transport</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">transport&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;http&quot;</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">requestFlow</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">handler&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">=&quot;URLMapper&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">handler&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">=&quot;java:org.apache.axis.handlers.http.HTTPAuthHandler&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">requestFlow</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">transport</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">deployment</span><span style="COLOR: #0000ff">&gt;</span></div>
</div>
<p>&nbsp;</p>
<p>这个文件里发布了三个服务：Version、AdminService和我们的BookSvc。还有一个方法可以生成这个文件，好象Axis推荐使用这种生成的方法，就是在同样目录下写一个deploy.wsdd文件（如果不想看可以直接跳到下一步），内容如下：</p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">deployment&nbsp;</span><span style="COLOR: #ff0000">xmlns</span><span style="COLOR: #0000ff">=&quot;http://xml.apache.org/axis/wsdd/&quot;</span><span style="COLOR: #ff0000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns:java</span><span style="COLOR: #0000ff">=&quot;http://xml.apache.org/axis/wsdd/providers/java&quot;</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">service&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;BookSvc&quot;</span><span style="COLOR: #ff0000">&nbsp;provider</span><span style="COLOR: #0000ff">=&quot;java:RPC&quot;</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;className&quot;</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">=&quot;com.bookstore.BookSvc&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">parameter&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=&quot;allowedMethods&quot;</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">=&quot;*&quot;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">service</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">deployment</span><span style="COLOR: #0000ff">&gt;</span></div>
</div>
<p>&nbsp;</p>
<p>也就是说deploy.wsdd里只包含关于我们的服务的描述，确认Tomcat已经启动，然后在同一目录下用下面这个命令生成server-config.wsdd文件：</p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /><span style="COLOR: #000000">java&nbsp;org.apache.axis.client.AdminClient&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">lhttp:</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">localhost:8080/bookstore/services/AdminService&nbsp;deploy.wsdd</span></div>
</div>
<p>&nbsp;</p>
<p>其中bookstore是我这个web应用程序的虚拟路径。</p>
<p align="justify">6、重新启动Tomcat，访问路径<a href="http://localhost:8080/bookstore/services">http://localhost:8080/bookstore/services</a>，就可以看到现在发布了三个Web服务，如下图。点击每个服务后的wsdl链接可以看到对应的WSDL描述。</p>
<p align="left"><img src="http://www.cnblogs.com/images/cnblogs_com/bjzhanghao/axis-services.gif" border="0" height="396" alt="" width="594" /><br />
<br />
</p>
<p>可以看出，在Axis里书写deploy.wsdd并利用org.apache.axis.client.AdminClient发布，其主要工作就是把&lt;service&gt;标签中的内容添加在server-config.wsdd里，所以一般直接编辑server-config.wsdd文件会更方便一些。不过当你还没有server-config.wsdd文件时，使用deploy.wsdd的方法会更方便些，因为AdminClient会帮你生成一些额外的xml元素（&lt;handler&gt;等等），而这些元素是必要的。</p>
<p>服务发布以后，就可以在IE浏览器里看到它的WSDL，一般是服务的URL后面加一个&ldquo;?wsdl&rdquo;，例如添加图书的WSDL可以通过<a href="http://localhost:8080/bookstore/services/BookSvc?wsdl">http://localhost:8080/bookstore/services/BookSvc?wsdl</a>看到。至于Java类是以何种规则映射到WSDL的，请参考<a href="http://java.sun.com/xml/jaxrpc/index.jsp">JAX-RPC</a>规范；WSDL本身的说明见<a href="http://www.w3.org/TR/wsdl">这里</a>；为了搞清生成的WSDL中各种URL格式的名称空间，最好对XML Schema有所了解，我觉得<a href="http://www-900.ibm.com/developerWorks/cn/xml/xml-schema/index.shtml">这篇文章</a>还不错。</p>
<p>我们还可以通过IE浏览器直接调用服务，方法是在服务URL后加&ldquo;method=xxx&rdquo;，其中xxx是要调用的方法名称。例如可以通过<a href="http://localhost:8080/bookstore/services/BookSvc?method=addBook">http://localhost:8080/bookstore/services/BookSvc?method=addBook</a>调用添加图书方法，按照我们的服务类，在Tomcat的控制台上应该可以看到打出了&ldquo;Book has been added.&rdquo;的字样。</p>
<p>因为添加图书方法的参数是一个自定义类型，所以在IE里调用时不能指定参数值（或者是可以以其他格式指定，但我还不知道）；如果参数是简单类型，就可以指定了。例如我们可以为BookSvc增加一个echo()方法，参数是一个java.lang.String类型的值，如下所示，然后重新编译并启动Tomcat（server-config.wsdd文件不必更改）。</p>
<p align="left">&nbsp;</p>
<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /><span style="COLOR: #000000">public&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;echo(String&nbsp;str){<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">Hello&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">str);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />}<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /></span></div>
</div>
<p align="left">&nbsp;</p>
<p>在IE里输入<a href="http://localhost:8080/bookstore/services/BookSvc?method=echo&amp;str=Mike">http://localhost:8080/bookstore/services/BookSvc?method=echo&amp;str=Mike</a>，就会看到Tomcat的控制台里打出了&ldquo;Hello Mike&rdquo;。如果有多个参数，只要把这些参数都列在URL里即可。</p>
          <br/>
          <span style="color:red;">
            <a href="http://tenn.javaeye.com/blog/148464#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 14 Dec 2007 23:31:21 +0800</pubDate>
        <link>http://tenn.javaeye.com/blog/148464</link>
        <guid>http://tenn.javaeye.com/blog/148464</guid>
      </item>
      <item>
        <title>[转]一个简单的WSDL文档（下） </title>
        <author>tenn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tenn.javaeye.com">tenn</a>&nbsp;
          链接：<a href="http://tenn.javaeye.com/blog/148463" style="color:red;">http://tenn.javaeye.com/blog/148463</a>&nbsp;
          发表时间: 2007年12月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          虽然发布的服务很简单，Axis帮我们生成的WSDL文档看起来却是比较复杂的，之所以这样的主要原因是WSDL要考虑到兼容各种实现和具有可扩展性，这就像我们使用一些框架做开发会使代码总量增加，而好处是使逻辑更加清晰。这篇帖子的上半部分介绍了WSDL里常用到的名称空间，现在就来说说WSDL里各元素的含义。<br /><br />一个WSDL文档里一般包含&lt;types>、&lt;message>、&lt;portType>、&lt;binding>和&lt;service>这几个元素，其中&lt;types>、&lt;message>和&lt;portType>可以看作抽象的接口定义，而&lt;binding>和&lt;service>是具体的实现，注：有些时候也把&lt;binding>看作接口的一部分。你也许看过一些WSDL把这两部分分开写在两个xml文件里，并在其中一个文件里引入（import）另一个的情况，这也是为什么要区分接口和实现的原因之一。在现实世界里，接口部分很可能是由某个组织（例如某行业协会）制定好的，该组织的成员在发布自己的Web服务时都要引入它，从而达到统一标准的目的。<br /><br />&lt;types>标签用来定义Web服务里用到的，XML Schema定义的数据类型以外的自定义数据类型，对于我们自定义的类（Book），会对应到一个&lt;complexType>，其中用&lt;element>元素指定每个参数的类型。JAX-RPC规范中规定了Java语言的数据类型到XML Schema数据类型的映射，例如int&lt;->xsd:int、java.lang.String&lt;->xsd:string等等，还有数组的映射方式。<br /><br />&lt;message>标签定义Web服务里的消息，最常见的就是请求和响应消息。&lt;message>中可以有&lt;part>元素，它对应Java类中各个方法的参数或返回值，例如addBook()方法有一个Book类型的参数，则在WSDL中会有&lt;part name="book" type="tns1:Book"/>的描述。<br /><br />&lt;portType>标签表示一个服务的类型，就是接口的意思了。WSDL里有些概念很容易混淆，比如port和service的区别，我把service理解为有一个具体URL的服务，而port代表某一地址，portType是service的抽象，不知道对不对。我们看一个WSDL文档，一般就该先找&lt;portType>元素，看看这个WSDL代表的Web服务里都有哪些方法，它们的参数和返回值是什么。这些方法是在&lt;portType>里用&lt;operation>元素表示的，&lt;operation>可以有&lt;input>和&lt;output>子元素，表示方法的输入和输出。注意，方法可以是只有输入或只有输出的。<br /><br />&lt;binding>元素将portType与具体的传输协议绑定。现在，绝大多数都是与SOAP绑定的，对每一个方法的输入和输出，都要指定SOAP的表示方法。JAX-RPC规范规定，SOAP绑定可以有rpc和document两种类型，分别表示远程过程调用和基于消息的方式。use属性可以是encoded或literal，对于前者要支持rpc的方式，对于后者要支持rpc和document的方式，它们使得SOAP消息的格式有所区别，但我还没有仔细研究，你可以参考一下JAX-RPC 1.1版本的6.3-6.4节。又想起另外一个问题，SOAP和HTTP的关系是怎样的，绑定到SOAP就等于绑定到HTTP了吗，应该不是，那么在哪里指定Web服务绑定的应用层协议（HTTP、SMTP等等）呢？（Update: 由transport属性指定应用层协议）<br /><br />最后，&lt;service>元素通过&lt;port>子元素把服务联系到一个具体的URL，更确切点，应该是把一个已绑定的portType联系到某个URL，这样就知道该把SOAP消息发给哪个服务器了。<br /><br />我觉得之所以应该花比较多的时间理解WSDL，因为WSDL在整个Web服务中扮演了十分核心的角色，它是对Web服务的一个比较完整的语法上的描述，同时，它还与XML、SOAP以及UDDI都有着非常密切的联系，因此对于我们更好的认识Web服务体系结构是很重要的。虽然现在的Web服务开发工具都能自动进行Java&lt;->WSDL的转换，但理解WSDL对于Web服务的不论是设计、开发还是修改调试都是必要的。
          <br/>
          <span style="color:red;">
            <a href="http://tenn.javaeye.com/blog/148463#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 14 Dec 2007 23:27:06 +0800</pubDate>
        <link>http://tenn.javaeye.com/blog/148463</link>
        <guid>http://tenn.javaeye.com/blog/148463</guid>
      </item>
      <item>
        <title>[转]一个简单的WSDL文档（上） </title>
        <author>tenn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tenn.javaeye.com">tenn</a>&nbsp;
          链接：<a href="http://tenn.javaeye.com/blog/148462" style="color:red;">http://tenn.javaeye.com/blog/148462</a>&nbsp;
          发表时间: 2007年12月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>现在，简单解释一下<a href="http://www.cnblogs.com/bjzhanghao/archive/2004/10/09/50216.aspx">《使用Axis发布简单的Web服务》</a>中发布的Web服务所对应WSDL文档的内容和结构。请注意，同样的Java类在不同的Web服务开发包中得到的WSDL文档不一定完全相同，这里还是以使用Axis的情况作为例子。</p>
<p>虽然比较长，但为了方便起见还是把完整的WSDL贴在下面，然后进行说明。由于我对Web服务的认识还很不够，所以几乎可以肯定会存在一些误解，仅作参考。</p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag"><!--sp--><span class="tag-name">xml</span><span>&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;1.0&quot;</span><span>&nbsp;</span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">&quot;UTF-8&quot;</span><span class="tag">?&gt;</span><span>&nbsp;&nbsp;</span></span> </span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">wsdl:definitions</span><span>&nbsp;</span><span class="attribute">targetNamespace</span><span>=</span><span class="attribute-value">&quot;http://localhost:8080/bookstore/services/BookSvc&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="attribute">xmlns</span><span>=</span><span class="attribute-value">&quot;http://schemas.xmlsoap.org/wsdl/&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="attribute">xmlns:apachesoap</span><span>=</span><span class="attribute-value">&quot;http://xml.apache.org/xml-soap&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="attribute">xmlns:impl</span><span>=</span><span class="attribute-value">&quot;http://localhost:8080/bookstore/services/BookSvc&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="attribute">xmlns:intf</span><span>=</span><span class="attribute-value">&quot;http://localhost:8080/bookstore/services/BookSvc&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="attribute">xmlns:soapenc</span><span>=</span><span class="attribute-value">&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="attribute">xmlns:tns1</span><span>=</span><span class="attribute-value">&quot;http://model.bookstore.com&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="attribute">xmlns:wsdl</span><span>=</span><span class="attribute-value">&quot;http://schemas.xmlsoap.org/wsdl/&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="attribute">xmlns:wsdlsoap</span><span>=</span><span class="attribute-value">&quot;http://schemas.xmlsoap.org/wsdl/soap/&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="attribute">xmlns:xsd</span><span>=</span><span class="attribute-value">&quot;http://www.w3.org/2001/XMLSchema&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">wsdl:types</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">schema</span><span>&nbsp;</span><span class="attribute">targetNamespace</span><span>=</span><span class="attribute-value">&quot;http://model.bookstore.com&quot;</span><span>&nbsp;</span><span class="attribute">xmlns</span><span>=</span><span class="attribute-value">&quot;http://www.w3.org/2001/XMLSchema&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">import</span><span>&nbsp;</span><span class="attribute">namespace</span><span>=</span><span class="attribute-value">&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">complexType</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;Book&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">sequence</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">element</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;ISDN&quot;</span><span>&nbsp;</span><span class="attribute">nillable</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;xsd:string&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp