<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>Frederick</title>
    <description></description>
    <link>http://frederick.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>apachet转发请求到tomcat的中文化问题解决方案</title>
        <author>Frederick</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://frederick.javaeye.com">Frederick</a>&nbsp;
          链接：<a href="http://frederick.javaeye.com/blog/208306" style="color:red;">http://frederick.javaeye.com/blog/208306</a>&nbsp;
          发表时间: 2008年06月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在用mapguide做webgis应用的时候，再次遇到中文化问题。<br /><br />场景是这样的：<br />由于某种需求的原因，有个请求必须用get的方式传送，而且url参数中含有中文。<br />首先，我在发送请求之前，用encodeURI将中文参数编码了。<br />代码示意如下：<br /><pre name="code" class="java">
var params = ....
params = encodeURI(params);
url = url + '&' + params;
...
</pre><br /><br />然后，在tomcat端接收到参数的时候，通过URIDecoder.decode来将参数解码。<br />代码如下：<br /><pre name="code" class="java">
    public static Map&lt;String, String> decodeRequestToMap(HttpServletRequest request) {
        Map&lt;String, String> m = new HashMap&lt;String, String>();
        Enumeration&lt;String> e = request.getParameterNames();
        try {
            while(e.hasMoreElements()) {
                String k = e.nextElement();
                String value = URLDecoder.decode(request.getParameter(k), "UTF-8");
                m.put(k, value);
            }
        } catch (UnsupportedEncodingException e1) {
            if (log.isErrorEnabled()) {
                log.error("不可能不支持UTF-8的啊！", e1);
            }
        }
        return m;
    }
</pre><br />另外有个Filter将request和response的charactorEncoding设置为UTF-8。<br />代码如下：<br /><pre name="code" class="java">
        request.setCharacterEncoding(this.charactorEncoding);
        response.setCharacterEncoding(this.charactorEncoding);
        chain.doFilter(request, response);
</pre><br /><br />但是我在调试的时候发现在filter起作用之前，中文参数已经是乱码了，而其他通过post方式传送的中文参数不受影响。这样，我在tomcat端作的所有工作都是白费。<br /><br />问题在那里呢？我在网上google了一把，有人说在apache的httpd.conf里面，要把AddDefaultCharset 设置成这个样子：AddDefaultCharset off。<br />原文大概如此：<br /><div class="quote_title">引用</div><div class="quote_div"><br />服务器端：<br />======<br />修改httpd.conf (在Redhat中放置的位置为/etc/httpd/conf/)<br />查找：<br />AddDefaultCharset ISO-8859-1<br />改成：<br />#AddDefaultCharset ISO-8859-1<br />AddDefaultCharset off<br /><br />这种方式关掉了服务器的默认语言的发送，这样仅凭html文件头中设置的语言来决定网页语言。<br /><br />很多文章都说通过修改为 AddDefaultCharset GB2312 把缺省语言改成GB2312来解决中文乱码，确实GB2312内码的网页可以正常显示了，但这并非万全之策。因为当你的网页内码不是GB2312，就算你在网页用下面的meta指定了正确的语言，如ISO8859-1，也不会解码为ISO8859-1，因为Apache已经先你一步将GB2312指定为网页的语言了<br /></div><br /><br />可是我在mapguide的apache里面，发现它根本就没有使用这个配置。<br />我尝试给apache加上AddDefaultCharset ISO-8859-1，没有。改成AddDefaultCharset UTF-8，也没用。改成AddDefaultCharset off，还是没有用。<br />这么看来，问题不在apache的配置这里了。<br /><br />那么问题在那里呢？？！我晕掉了。<br />后来我想起了一个问题，请求是apche转发给tomcat的，那么会不会是apache转到tomcat的时候，出现的乱码呢？<br />于是，我把tomcat配置转接接口的配置改了一下<br />代码如下：<br /><pre name="code" class="java">
&lt;Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>
</pre><br />后面这个URIEncoding="UTF-8"就是我加上去的东西，原来是没有这个的。<br /><br />然后测试。果然，乱码没有了。
          <br/>
          <span style="color:red;">
            <a href="http://frederick.javaeye.com/blog/208306#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 26 Jun 2008 17:37:59 +0800</pubDate>
        <link>http://frederick.javaeye.com/blog/208306</link>
        <guid>http://frederick.javaeye.com/blog/208306</guid>
      </item>
      <item>
        <title>动态生成table在IE下的bug</title>
        <author>Frederick</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://frederick.javaeye.com">Frederick</a>&nbsp;
          链接：<a href="http://frederick.javaeye.com/blog/193561" style="color:red;">http://frederick.javaeye.com/blog/193561</a>&nbsp;
          发表时间: 2008年05月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在使用js为页面动态生成table的时候，发现一个很奇怪的现象。<br /><pre name="code" class="java">
function render(os){
  var table = document.getElementById('cutomers');
  var tbody = document.createElement('tbody');
  table.appendChild(tbody);
  table = tbody;
  table.innerHTML = '';
  var tr = createRow(null, ['ID', '名称', '光路', '纤序'], 0);
  tr.className = 'SearchHeading';
  table.appendChild(tr);
  for(var i=0;i&lt;os.length;i++){
    tr = createRow(os[i], ['ID', 'NAME', 'OPTICNAME', 'FIBERNO'], i);
    table.appendChild(tr);
   }
}
</pre><br /><br />注意上面的table.innerHTML＝''这行。如果是在Firefox或者Opera下运行都没有问题，但是在IE下，会导致table的内容最终被清空。按理说，这行代码在前面，给table添加内容的代码在后面，那么最后table应该是有内容的才对。可是在IE下，似乎这行代码反而在最后才执行，导致了table的内容被清空。如果把这行代码去掉，那么一切都正常了。<br /><br />当然，写上这行代码并不是说这行代码是必须的，这里只是说说在IE下的这种奇怪情况。也许，这是IE的一个Bug？
          <br/>
          <span style="color:red;">
            <a href="http://frederick.javaeye.com/blog/193561#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><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, 16 May 2008 10:59:39 +0800</pubDate>
        <link>http://frederick.javaeye.com/blog/193561</link>
        <guid>http://frederick.javaeye.com/blog/193561</guid>
      </item>
      <item>
        <title>spring 学习日记 - 基于annotation的spring mvc 1</title>
        <author>Frederick</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://frederick.javaeye.com">Frederick</a>&nbsp;
          链接：<a href="http://frederick.javaeye.com/blog/173283" style="color:red;">http://frederick.javaeye.com/blog/173283</a>&nbsp;
          发表时间: 2008年03月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Spring 2.5已经出来好久了，可是一直都没有关注过。最近才开始看spring2.5的reference，发现该版本提供了基于annotation的spring mvc开发功能。<br /><br />一直都认为spring没有提供对Java5特性的特别支持是一个遗憾，2.5版本的这些改进，算是对这个遗憾的弥补吧。不过我估计短时间内2.5版本提供的这些特性是不可能用到我们的正式项目中去的了。毕竟2.0风格的开发已经是比较成熟的了。<br /><br />好了，现在开始介绍基于annotation的spring mvc开发。<br />虽然说是基于annotation的开发，但是我们仍然需要对几个基本的东西在xml里面配置一下，不可能说完全拜托xml配置文件。首先，我们需要在spring的配置文件中指定几个基本的配置：<br /><pre name="code" class="xml">
&lt;beans 
  xmlns="http://www.springframework.org/schema/beans" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:context="http://www.springframework.org/schema/context"
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
                      http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                      http://www.springframework.org/schema/context 
                      http://www.springframework.org/schema/context/spring-context-2.5.xsd"
  default-autowire="byName">
  
  &lt;context:property-placeholder location="WEB-INF/config/globalConfig.properties"/>
  
  &lt;context:component-scan base-package="fred.web.pda.web.controller"/>
&lt;/beans>
</pre><br />这些配置主要指定了三个东西。<br />1.一个是context命名空间，这个东西是2.5.1里面新加上来的。有意思的是，如果指定了这个熟悉，那么就必须吧xmlns="http://www.springframework.org/schema/beans对应指定为http://www.springframework.org/schema/beans/spring-beans-2.5.xsd，否者myeclipse的辅助工具会报错说找不到&lt;context:property-placeholder>的定义。<br />2.然后是必须指定default-autowire="byName"。这个属性的意思是对Controller里面的属性依赖注入的时候，会自动按照名称来进行匹配。<br />3.是&lt;context:component-scan base-package="fred.web.pda.web.controller"/>这个意思是spring需要对指定的报里面找到的annotation进行处理。<br /><br />有了上面的配置，其他的东西我们都可以用annotation来配置了。<br /><br />现在，我们开发写第一个Controller。我喜欢用MultiActionController。这里就以此为例。<br /><pre name="code" class="java">
@Controller
public class AuthenController {
    /**
     * 返回登录页面的视图名。
     */
    @RequestMapping("/authen/toLogin.do")
    public String toAuthen() {
        return "authen/authen";
    }
    
    @RequestMapping("/authen/toLogin.do")
    public String authen(Model model) {
        return "authen/authen";
    }
}
</pre><br />他有一下几个特点：<br />1. 注意到这个Controller不需要继承任何基类，我们给它添加上@Controller标注，表示它是一个Controller。<br />2.要支持MultiActionController很简单，我们给每一个action方法添加上@RequestMapping("/authen/toLogin.do")即可。<br />3.返回视图的方式多样化。对这一点，我们在后面详谈。<br />4.访问HttpServletRequest参数的方式多样化。这一个在下一篇文章里面详谈。<br /><br />对于上面的第三点，就是返回视图，我们有两个方式：<br />1. 继续在xml里面指定viewResolver，然后action方法不要返回String，而是像在老的Controller里面做的那样，返回一个ModelAndView对象。<br />2.完全不在xml文件里面配置，而是在action方法中返回一个String类型的参数。这个参数就是要去的视图。但是也发现了一个问题，就是旧的配置方式可以把表现层的东西放到WEB-INF目录底下，来杜绝直接通过浏览器地址栏的访问，可是现在好像不行了。暂时还没有发现替代的方法。比如，我的authen.jsp页面的存放路径是${ProjectName}/WEB-INF/view/jsp/authen/authen.jsp，那么在使用xml配置的方式中，我只要在action方法中返回new ModelAndView("authen/authen");就可以了，这个路径的前缀和后缀可以在viewResolver中配置就好。但是现在没有了xml中的viewResolver，我们只能通过类似于 return "${ProjectName}/view/jsp/authen/authen.jsp"来返回视图，这时候会发现无法访问放在/WEB-INF目录中的视图。<br /><br /><br />在下一篇文章中介绍如何获取来自HttpServletRequest的参数<br /><br />在下一篇文章中
          <br/>
          <span style="color:red;">
            <a href="http://frederick.javaeye.com/blog/173283#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><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, 18 Mar 2008 10:44:25 +0800</pubDate>
        <link>http://frederick.javaeye.com/blog/173283</link>
        <guid>http://frederick.javaeye.com/blog/173283</guid>
      </item>
      <item>
        <title>jBPM的Scheduler模块和Spring集成失败</title>
        <author>Frederick</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://frederick.javaeye.com">Frederick</a>&nbsp;
          链接：<a href="http://frederick.javaeye.com/blog/158251" style="color:red;">http://frederick.javaeye.com/blog/158251</a>&nbsp;
          发表时间: 2008年01月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          我的Web系统中使用了jBPM，并使用Spring来管理bean，并使用Spring＋JTOM组合来管理来自多个数据库的事务（有Oracle9i，Microsoft SQL Server 2000）。但是没有使用jBPM的Scheduler。系统运行很好。<br />最近由于业务需要，我在jBPM中添加了timer。这样，就需要配置一个Scheduler了。而我的麻烦也从此开始。<br /><br />我一开始使用jBPM提供的那个SchedulerServlet，可是发现这个Servlet会去自动加载jBPM的默认配置，也就是在default.jbpm.ctf.xml中配置的属性，特别是数据库的配置。这样，我的Spring就无法管理它的事务了。<br />我查看了它的源代码，发现其代码如下（省略了不相干代码）：<br /><pre name="code" class="java">
public class SchedulerServlet extends HttpServlet {

  private static final long serialVersionUID = 1L;
  
  Scheduler scheduler = null;

  public void init() throws ServletException {
    // create a new scheduler
    scheduler = new Scheduler();

    // start the scheduler
    scheduler.start();
  }
  ...
}

public class Scheduler {
  
  SchedulerThread schedulerThread = null;
  ...
  public void start() {
    log.debug("starting the scheduler");
    schedulerThread = new SchedulerThread();
    schedulerThread.setInterval(interval);
    schedulerThread.addListener(new HistoryListener());
    schedulerThread.start();
  }
  ...
}

public class SchedulerThread extends Thread {

  JbpmConfiguration jbpmConfiguration = null;
  String jbpmContextName = null;
  ...

  public SchedulerThread() {
    this(JbpmConfiguration.getInstance(), JbpmContext.DEFAULT_JBPM_CONTEXT_NAME);
  }
  ...
}
</pre><br /><br />我查找了相关资源，发现没有现成的和Spring集成的工具。（jBPM的核心引擎已经有spring-module提供了集成工具）。我想，那我自己覆盖这个SchedulerServlet，让这个SchedulerThread使用Spring管理下的JbpmConfiguration实例，那不就可以达到目的了吗？于是动手。<br /><br />可是这时候才发现，这个jBPM提供的Scheduler对象，根本就没有可以让我能够向SchedulerThread注射入JbpmConfiguration的入口。而且这个类是default的可见范围，连继承扩展都做不到。迫于无奈，我在Scheduler的相同package下，建了一个子类，来提供注入Spring管理的JbpmConfiguration实例的能力，然后自己写了一个ServletContextListener来加载这个监听线程。<br />代码如下：<br /><pre name="code" class="java">
package org.jbpm.scheduler.impl;
...

public class SpringAwareScheduler extends Scheduler {
    
    private static final Log log = LogFactory.getLog(SpringAwareScheduler.class);

    protected JbpmConfiguration jbpmConfiguration;
    
    public SpringAwareScheduler() {
        this(null);
    }
    
    public SpringAwareScheduler(JbpmConfiguration jbpmConfiguration) {
        super();
        this.jbpmConfiguration = jbpmConfiguration;
    }
    
    /**
     * @param jbpmConfiguration the jbpmConfiguration to set
     */
    public void setJbpmConfiguration(JbpmConfiguration jbpmConfiguration) {
        this.jbpmConfiguration = jbpmConfiguration;
    }
    
    public void start() {
      log.debug("starting the scheduler");
      schedulerThread = new SchedulerThread(this.jbpmConfiguration);
      schedulerThread.setInterval(interval);
      schedulerThread.addListener(new HistoryListener());
      schedulerThread.start();
    }
}
</pre><br />这里是用来取代SchedulerServlet的ServletContextListener：<br /><pre name="code" class="Java">
public class SpringAwareJbpmSchedulerListener implements ServletContextListener {

    private Scheduler scheduler = null;
    
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        scheduler.stop();
    }

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        // create a new scheduler
        String beanName = sce.getServletContext().getInitParameter("jbpmConfigurationBeanName");
        if (StringUtils.isBlank(beanName)) {
            beanName = "jbpmConfiguration";
        }
        WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(sce.getServletContext());
        JbpmConfiguration jbpmConfiguration = (JbpmConfiguration) wac.getBean(beanName);
        scheduler = new SpringAwareScheduler(jbpmConfiguration);
        
        JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(JbpmContext.DEFAULT_JBPM_CONTEXT_NAME);
        SessionFactory sessionFactory = jbpmContext.getSessionFactory();
        assert sessionFactory != null;
        
        // initialize it with the servlet init parameters 
        int interval = 5000;
        if (!StringUtils.isBlank(sce.getServletContext().getInitParameter("interval"))) {
            interval = Integer.parseInt(sce.getServletContext().getInitParameter("interval"));
        }
        scheduler.setInterval(interval);
        
        int historyMaxSize = 50;
        if (!StringUtils.isBlank(sce.getServletContext().getInitParameter("historyMaxSize"))) {
            historyMaxSize = Integer.parseInt(sce.getServletContext().getInitParameter("historyMaxSize"));
        }
        scheduler.setHistoryMaxSize(historyMaxSize);
        
        // put the scheduler in the web app context
        sce.getServletContext().setAttribute("scheduler", scheduler);
        
        // start the scheduler
        scheduler.start();
    }
}
</pre><br /><br />好了，以为现在在web.xml中配置好了以后，总该可以了吧？可是不然。问题又来了。发现系统在启动的过程中，根本没有使用在JbpmConfiguration实例中配置的SessionFactory，而是继续使用根据default.jbpm.cfg.xml中的配置生成的那个SessionFactory实例。<br />我单步跟踪了一下代码，发现之所以会去加载根据default.jbpm.cfg.xml中的配置生成的那个SessionFactory实例，原因是在DbPersistenceService在获取SessionFactory实例的时候，发现为空，所以就按照默认配置去创建一个新的SessionFactory实例。异常信息如下：<br /><pre name="code" class="java">
10:19:32,939 FATAL [org.hibernate.connection.DatasourceConnectionProvider] - Could not find datasource: java:/DefaultDS
javax.naming.NameNotFoundException
	at org.objectweb.carol.jndi.enc.java.CompNamingContext.lookupCtx(CompNamingContext.java:689)
	at org.objectweb.carol.jndi.enc.java.CompNamingContext.lookup(CompNamingContext.java:179)
	at org.objectweb.carol.jndi.enc.java.JavaURLContext.lookup(JavaURLContext.java:138)
	at javax.naming.InitialContext.lookup(InitialContext.java:392)
	at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:52)
	at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
	at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56)
	at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:414)
	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62)
	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
	at org.jbpm.persistence.db.DbPersistenceServiceFactory.getSessionFactory(DbPersistenceServiceFactory.java:91)
	at org.jbpm.persistence.db.DbPersistenceService.getSessionFactory(DbPersistenceService.java:76)
	at org.jbpm.persistence.db.DbPersistenceService.getSession(DbPersistenceService.java:80)
	at org.jbpm.persistence.db.DbPersistenceService.getSchedulerSession(DbPersistenceService.java:261)
	at org.jbpm.JbpmContext.getSchedulerSession(JbpmContext.java:531)
	at org.jbpm.scheduler.impl.SchedulerThread.executeTimers(SchedulerThread.java:104)
	at org.jbpm.scheduler.impl.SchedulerThread.run(SchedulerThread.java:71)
</pre><br />可是，明明DbPersistenceService的实例是根据JbpmContext创建的，而JbpmContext又是根据JbpmConfiguration实例创建的。也就是说，DbPersistenceService使用的SessionFactory的实例应该是来自JbpmConfiguration的实例中的那个。为什么实际上却为空呢？<br /><br />现在我晕掉了。到底错误在那里呢？
          <br/>
          <span style="color:red;">
            <a href="http://frederick.javaeye.com/blog/158251#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><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><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 22 Jan 2008 11:09:04 +0800</pubDate>
        <link>http://frederick.javaeye.com/blog/158251</link>
        <guid>http://frederick.javaeye.com/blog/158251</guid>
      </item>
      <item>
        <title>删除jbpm流程实例出错，那位帮我看看</title>
        <author>Frederick</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://frederick.javaeye.com">Frederick</a>&nbsp;
          链接：<a href="http://frederick.javaeye.com/blog/139884" style="color:red;">http://frederick.javaeye.com/blog/139884</a>&nbsp;
          发表时间: 2007年11月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          我使用spring-module工具，调用jBPM提供的方法 GraphSession.deleteProcessInstance()。按理说，既然jBPM提供了方法来删除流程实例，那么就应该把相关的东西统统都删掉才对，可是看错误信息，似乎还得调用这个方法的人来删除相关对象。<br /><br />是不是我不应该调用这个方法？是不是jBPM提供了其他的删除流程实例的方法我没有找到呢？<br /><br /><br />代码如下：<br /><br /><pre name="code" class="java">
	public void deleteProcessInstance(final Long processInstanceId) {
		this.jbpmTemplate.execute(new JbpmCallback() {
			@Override
			public Object doInJbpm(JbpmContext context) throws JbpmException {
				context.getGraphSession().deleteProcessInstance(processInstanceId);
				return null;
			}
		});
	}
</pre><br /><br />错误信息如下：<br /><pre name="code" class="java">
2007-11-12 11:11:55,859 ERROR [org.hibernate.event.def.AbstractFlushingEventListener] - Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
	at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:92)
	at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:87)
	at org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatcher.java:222)
	at org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2479)
	at org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2697)
	at org.hibernate.action.EntityDeleteAction.execute(EntityDeleteAction.java:74)
	at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:234)
	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:146)
	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
	at org.springframework.orm.hibernate3.SpringSessionSynchronization.beforeCommit(SpringSessionSynchronization.java:126)
	at org.springframework.transaction.support.TransactionSynchronizationUtils.triggerBeforeCommit(TransactionSynchronizationUtils.java:48)
	at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCommit(AbstractPlatformTransactionManager.java:835)
	at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:645)
	at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:632)
	at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:314)
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:117)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
	at $Proxy16.removeRequestOrderByBusinessDpt(Unknown Source)
	at cn.com.gxlu.fiberscheduler.web.controller.fiberapply.FiberApplyController.deleteFiberApply(FiberApplyController.java:202)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:428)
	at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:366)
	at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
	at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:857)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:792)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:475)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:440)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at cn.com.gxlu.fiberscheduler.web.util.CharactorEncodingFilter.doFilter(CharactorEncodingFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.sql.BatchUpdateException: ORA-02292: 违反完整约束条件 (FIBERSCHEDULERJBPM.FK_LOG_TASKINST) - 已找到子记录日志

	at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:367)
	at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:8727)
	at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
	at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
	... 52 more
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://frederick.javaeye.com/blog/139884#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/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 12 Nov 2007 11:22:46 +0800</pubDate>
        <link>http://frederick.javaeye.com/blog/139884</link>
        <guid>http://frederick.javaeye.com/blog/139884</guid>
      </item>
      <item>
        <title>CXF在同时发布两个类的时候出错</title>
        <author>Frederick</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://frederick.javaeye.com">Frederick</a>&nbsp;
          链接：<a href="http://frederick.javaeye.com/blog/132022" style="color:red;">http://frederick.javaeye.com/blog/132022</a>&nbsp;
          发表时间: 2007年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp; 试了好多次，都是这样。当使用Spring配置来发布两个或以上的类作为WebService的时候，只有配置文件里面的第一个可以被成功发布，以后的都会出错。</p>
<p>&nbsp;&nbsp;&nbsp; 配置文件如下：</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">&lt;</span><span class="tag-name">jaxws:endpoint</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;SampleService&quot;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">implementor</span><span>=</span><span class="attribute-value">&quot;fred.web.webservice.implementation.SampleServiceImpl&quot;</span><span>&nbsp;</span><span class="attribute">address</span><span>=</span><span class="attribute-value">&quot;/SampleService&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">jaxws:serviceFactory</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &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">ref</span><span>&nbsp;</span><span class="attribute">bean</span><span>=</span><span class="attribute-value">&quot;jaxWsServiceFactoryBean&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">jaxws:serviceFactory</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span></span><span class="tag"><span class="tag-name">jaxws:endpoint</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">jaxws:endpoint</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ServiceForNetGeo&quot;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">implementor</span><span>=</span><span class="attribute-value">&quot;fred.web.webservice.implementation.ServiceForNetGeoImpl&quot;</span><span>&nbsp;</span><span class="attribute">address</span><span>=</span><span class="attribute-value">&quot;/ServiceForNetGeo&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">jaxws:serviceFactory</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">ref</span><span>&nbsp;</span><span class="attribute">bean</span><span>=</span><span class="attribute-value">&quot;jaxWsServiceFactoryBean&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">jaxws:serviceFactory</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span></span><span class="tag"><span class="tag-name">jaxws:endpoint</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span> </span></li>
</ol>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 比如，一个的wsdl路径为<a href="http://localhost/CxfSservice/ws/SampleService?wsdl">http://localhost/CxfSservice/ws/SampleService?wsdl</a>， 一个的wsdl路径为<a href="http://localhost/SampleService1?wsdl">http://localhost/CxfService/ws/ServiceForNetGeo?wsdl</a>。那么，浏览器中打开第一个的地址的时候，可以发现生成的wsdl是正确的。但是当打开第二个地址的时候，会发现生成的wsdl和第一个地址的是一样的。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查找了CXF提供的示例，都是只发布一个类的，没有发现有同时发布两个类的例子。或者这是CXF的bug？</p>
          <br/>
          <span style="color:red;">
            <a href="http://frederick.javaeye.com/blog/132022#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/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</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>Mon, 15 Oct 2007 18:04:35 +0800</pubDate>
        <link>http://frederick.javaeye.com/blog/132022</link>
        <guid>http://frederick.javaeye.com/blog/132022</guid>
      </item>
      <item>
        <title>cxf的WebService实现中，方法不能给参数传空指针</title>
        <author>Frederick</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://frederick.javaeye.com">Frederick</a>&nbsp;
          链接：<a href="http://frederick.javaeye.com/blog/131878" style="color:red;">http://frederick.javaeye.com/blog/131878</a>&nbsp;
          发表时间: 2007年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 项目中使用cxf作WebService的实现。但是在调用一个方法的时候，在客户端就出错，说是IllegalArgumentException。昨晚加班到凌晨4点，才找到原因。原来，在服务方法中有一个String类型的参数，当给这个参数传空指针的时候，就会出错。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cxf也太弱了吧？给参数传空指针就会出错，而且错误信息十分不友好。为什么不提示说是空指针呢？或者干脆就支持空指针好了。</p>
          <br/>
          <span style="color:red;">
            <a href="http://frederick.javaeye.com/blog/131878#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><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 15 Oct 2007 10:39:20 +0800</pubDate>
        <link>http://frederick.javaeye.com/blog/131878</link>
        <guid>http://frederick.javaeye.com/blog/131878</guid>
      </item>
      <item>
        <title>如何实现Spring管理下的不依赖于服务器端启动与否的WebService客户端</title>
        <author>Frederick</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://frederick.javaeye.com">Frederick</a>&nbsp;
          链接：<a href="http://frederick.javaeye.com/blog/130796" style="color:red;">http://frederick.javaeye.com/blog/130796</a>&nbsp;
          发表时间: 2007年10月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最近在项目中遇到一种情况，就是两个程序需要使用WebService互通数据，有时系统A需要调用系统B提供的WebService服务，有时系统B需要调用系统A提供的WebService服务。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我使用Spring 管理下的 Apache CXF 来实现WebService服务。现在遇到的问题是，Spring管理的WebService客户端使用<font face="Arial"><font face="Arial">org.apache.cxf.frontend.ClientProxyFactoryBean </font>的一个bean来实现，这个东西</font>需要在配置文件中写死WebService服务器端的地址，当系统启动的时候，Spring就会尝试去访问这个地址，来初始化这个bean。这也就意味着客户端必须依赖与服务器端启动与否。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在我遇到的场景下，也就是系统A要使用系统B提供的WebService服务，系统A必须等待系统B启动以后才能启动；系统B需要使用系统A提供的WebService服务，系统B必须等待系统A启动以后才能启动。这是一个死循环。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 那么，有没有什么办法，可以让WebService的客户端启动的时候，不必等待WebService的服务器端启动起来。而是在客户端真正去调用服务器端提供的服务的时候，才去尝试连接服务器？</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果使用代码来实现客户端，似乎是有办法的。但是我想利用Spring提供的WebService支持以简化开发，在Spring管理下的客户端实现有没有什么办法解决这个问题？</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我相信很多朋友都遇到过类似的问题。我也真正研究中。等有结果了再写上来。</p>
          <br/>
          <span style="color:red;">
            <a href="http://frederick.javaeye.com/blog/130796#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><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 10 Oct 2007 15:38:23 +0800</pubDate>
        <link>http://frederick.javaeye.com/blog/130796</link>
        <guid>http://frederick.javaeye.com/blog/130796</guid>
      </item>
      <item>
        <title>配置tomcat6数据源</title>
        <author>Frederick</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://frederick.javaeye.com">Frederick</a>&nbsp;
          链接：<a href="http://frederick.javaeye.com/blog/117904" style="color:red;">http://frederick.javaeye.com/blog/117904</a>&nbsp;
          发表时间: 2007年10月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="MsoTitle" style="MARGIN: 12pt 0cm 3pt"><strong><font size="5"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Cambria; mso-ascii-theme-font: major-latin; mso-hansi-font-family: Cambria; mso-hansi-theme-font: major-latin">为</span><span lang="EN-US">tomcat6</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Cambria; mso-ascii-theme-font: major-latin; mso-hansi-font-family: Cambria; mso-hansi-theme-font: major-latin">配置数据源</span></font></font></strong></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><font size="2"><span lang="EN-US">Tomcat6</span><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">的数据源配置方式和以前的版本不一样了。上网找了好久都没有找到能在</span><span lang="EN-US">tomcat6</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">环境下使用的。经过多次测试，终于找到了一个可行的配置。</span></font></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang="EN-US"><o:p><font size="2">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20.25pt"><font size="2"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">我们先定义</span><span lang="EN-US">tomcat6</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">的安装根目录为</span><span lang="EN-US"> ${tomcat6}</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">，以方便后面的描述。</span></font></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20.25pt"><span lang="EN-US"><o:p><font size="2">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Tomcat6</span><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">的服务器配置文件放在</span> <span lang="EN-US">${tomcat6}/conf </span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">目录底下。我们可以在这里找到</span><span lang="EN-US"> server.xml </span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">和</span><span lang="EN-US"> context.xml</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">。当然，还有其他一些资源文件。但是在在本文中我们只用得上这两个，其他的就不介绍了。</span></font></font></p>
<h1 style="MARGIN: 17pt 0cm 16.5pt 21pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo1"><span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><span style="mso-list: Ignore">1.<span new="" times="" style="FONT-WEIGHT: normal; FONT-SIZE: 7pt; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal">&nbsp;&nbsp; </span></span></span><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">首先，需要为数据源配置一个</span><span lang="EN-US">JNDI</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">资源。</span></font></h1>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><font size="2"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">我们的数据源</span><span lang="EN-US">JNDI</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">资源应该定义在</span><span lang="EN-US">context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">元素中。</span></font></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><font size="2"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">在</span><span lang="EN-US">tomcat6</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">版本中，</span><span lang="EN-US">context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">元素已经从</span><span lang="EN-US">server.xml</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">文件中独立出来了，放在一个</span><span lang="EN-US">context.xml</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">文件中。因为</span><span lang="EN-US">server.xml</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">是不可动态重加载的资源，服务器一旦启动了以后，要修改这个文件，就得重启服务器才能重新加载。而</span><span lang="EN-US">context.xml</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">文件则不然，</span><span lang="EN-US">tomcat</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">服务器会定时去扫描这个文件。一旦发现文件被修改（时间戳改变了），就会自动重新加载这个文件，而不需要重启服务器。</span></font></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><font size="2"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">我们当然推荐把应用需要的</span><span lang="EN-US">JNDI</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">资源配置在</span><span lang="EN-US">context.xml</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">文件中，而不是</span><span lang="EN-US">server.xml</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">文件中。</span></font></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font size="3">&nbsp;</font></o:p></span></p>
<h2 style="MARGIN: 13pt 0cm 13pt 1cm; TEXT-INDENT: -1cm; mso-list: l0 level2 lfo2"><span lang="EN-US" style="mso-fareast-font-family: Cambria; mso-fareast-theme-font: major-latin; mso-bidi-font-family: Cambria; mso-bidi-theme-font: major-latin"><span style="mso-list: Ignore">1.1.<span new="" times="" style="FONT-WEIGHT: normal; FONT-SIZE: 7pt; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal">&nbsp; </span></span></span><span lang="EN-US">Context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: major-fareast; mso-ascii-font-family: Cambria; mso-ascii-theme-font: major-latin; mso-hansi-font-family: Cambria; mso-hansi-theme-font: major-latin"><font face="Arial">元素的范围</font></span></h2>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><font size="2"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">由于</span><span lang="EN-US">context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">元素的可用范围是可以控制的，我们可以根据需要为</span><span lang="EN-US">Context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">元素定义不同级别的可用范围。</span></font></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font size="3">&nbsp;</font></o:p></span></p>
<h3 style="MARGIN: 13pt 0cm 13pt 35.45pt; TEXT-INDENT: -35.45pt; mso-list: l0 level3 lfo2"><span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><span style="mso-list: Ignore"><font size="5">1.1.1.</font><span new="" times="" style="FONT-WEIGHT: normal; FONT-SIZE: 7pt; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal">&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"><font size="5" face="Arial">全局可用</font></span></h3>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><font size="2"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">全局可用的范围意味着</span><span lang="EN-US">tomcat</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">服务器下面的所有应用都可以使用这个</span><span lang="EN-US">context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">元素定义的资源。</span></font></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><font size="2"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">全局可用范围的</span><span lang="EN-US">context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">元素在文件</span><span lang="EN-US"> ${tomcat6}/conf/context.xml </span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">文件中描述。这个文件在</span><span lang="EN-US">tomcat</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">刚刚被安装的时候，是没有定义任何资源的。我们可以看到，这个文件的内容：</span></font></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><font size="2"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"></span></font></font>&nbsp;</p>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><font size="2"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"></span></font><span lang="EN-US"><o:p><font size="3"><strong>xml 代码</strong></font></o:p></span></p>
<div class="dp-highlighter">
<div class="bar"><font face="Arial"></font></div>
<ol class="dp-xml">
    <li class="alt"><span><font face="Arial"><span class="tag">&lt;</span><span class="tag-name">Context</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></font></span> </li>
    <li class=""><font face="Arial"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">WatchedResource</span><span class="tag">&gt;</span><span>WEB-INF/web.xml</span><span class="tag"><span class="tag-name">WatchedResource</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></font> </li>
    <li class="alt"><span></span><font face="Arial"><span class="tag"><span class="tag-name">Context</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></font> </li>
</ol>
</div>
<div class="code_title"></div>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"><font size="3"><span lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span></span></font><font size="2"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">其中的</span><span lang="EN-US"> <watchedresource></watchedresource>WEB-INF/web.xml</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">表示服务器会监视应用的</span><span lang="EN-US">WEB-INF/web.xml </span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">文件来知道那个应用会引用在此处定义的资源。</span></font></font></p>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"><span lang="EN-US"><o:p><font size="3"></font></o:p></span></p>
<h3 style="MARGIN: 13pt 0cm 13pt 35.45pt; TEXT-INDENT: -35.45pt; mso-list: l0 level3 lfo2"><span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><span style="mso-list: Ignore"><font size="5">1.1.2.</font><span new="" times="" style="FONT-WEIGHT: normal; FONT-SIZE: 7pt; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal">&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"><font size="5" face="Arial">指定的虚拟主机可用</font></span></h3>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><font size="2"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">顾名思义，指定的虚拟主机内可用就是说，在</span><span lang="EN-US">tomcat</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">服务器配置的虚拟主机中，只有指定的那个虚拟主机上跑的应用才能使用。什么是虚拟主机和如何配置虚拟主机在这里就不描述了，有兴趣的同学自己去查</span><span lang="EN-US">tomcat</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">的官方资料。</span></font></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><font size="2"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">要配置一个虚拟主机可用的</span><span lang="EN-US">context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">资源，可以在</span><span lang="EN-US">${tomcat6}/conf/</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">目录下的文件</span> <span lang="EN-US">${enginename}/${hostname}/context.xml.default </span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">中表述。</span></font></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><font size="2"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">比如，一般一个</span><span lang="EN-US">tomcat</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">服务器安装好了以后，都有一个默认的叫做</span> <span lang="EN-US">Catalina </span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">的引擎，在这个引擎下有一个叫做</span> <span lang="EN-US">localhost </span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">的虚拟主机。我们的应用一般都放在这个虚拟主机下。关于这个虚拟主机的配置，不再本文表述，有兴趣的同学可以自己去查</span><span lang="EN-US">tomcat</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">的官方文档。</span></font></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang="EN-US"><o:p><font size="2"></font></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><font size="3"><font face="Arial"><font size="2"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">那么，如果我们想要配置一个在</span><span lang="EN-US"> Catalina/localhost </span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">虚拟主机下都可以使用的资源，我们需要在目录</span><span lang="EN-US"> ${tomcat6}/conf </span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">下建立路径</span><span lang="EN-US"> Catalina/localhost</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">，在这个路径下创建文件</span><span lang="EN-US"> context.xml.default</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">。全路径是</span><span lang="EN-US"> ${tomcat6}/conf/Catalina/localhost/context.xml.default</span></font><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">。</span></font></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font size="3">&nbsp;</font></o:p></span></p>
<h3 style="MARGIN: 13pt 0cm 13pt 35.45pt; TEXT-INDENT: -35.45pt; mso-list: l0 level3 lfo2"><span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><span style="mso-list: Ignore"><font size="5">1.1.3.</font><span new="" times="" style="FONT-WEIGHT: normal; FONT-SIZE: 7pt; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal">&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"><font size="5" face="Arial">指定的应用可用</font></span></h3>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><font size="2"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">顾名思义，一个指定的应用可用的</span><span lang="EN-US">context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">元素，意味着这是一个只有指定的引擎，指定的虚拟主机，指定的应用才可以使用的</span><span lang="EN-US">context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">元素。</span></font></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><font size="2"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">如果我们用</span><span lang="EN-US">appname</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">来代表这个指定的这个指定的应用的名字，那么元素的定义应该被放置在</span><span lang="EN-US"> ${tomcat}/conf/${enginename}/${hostname}/${appname}.xml</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">文件中。</span></font></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><font size="2"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">例如，假设在</span><span lang="EN-US">localhost</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">下我们有一个</span><span lang="EN-US">web</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">应用叫做</span><span lang="EN-US">FiberScheduler</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">，那么我们应该创建文件</span><span lang="EN-US"> ${tomcat6}/conf/Catalina/localhost/FiberScheduler.xml</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">。</span></font></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font size="3"></font></o:p></span></p>
<h2 style="MARGIN: 13pt 0cm 13pt 1cm; TEXT-INDENT: -1cm; mso-list: l0 level2 lfo2"><span lang="EN-US" style="mso-fareast-font-family: Cambria; mso-fareast-theme-font: major-latin; mso-bidi-font-family: Cambria; mso-bidi-theme-font: major-latin"><span style="mso-list: Ignore">1.2.<span new="" times="" style="FONT-WEIGHT: normal; FONT-SIZE: 7pt; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal">&nbsp; </span></span></span><span lang="EN-US">Context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: major-fareast; mso-ascii-font-family: Cambria; mso-ascii-theme-font: major-latin; mso-hansi-font-family: Cambria; mso-hansi-theme-font: major-latin"><font face="Arial">元素的配置</font></span></h2>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20.25pt"><font size="2"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">好了，啰唆了这么多，终于到了介绍到底这个</span><span lang="EN-US">context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">元素该怎么配置了。</span></font></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font size="3"></font></o:p></span></p>
<h3 style="MARGIN: 13pt 0cm 13pt 35.45pt; TEXT-INDENT: -35.45pt; mso-list: l0 level3 lfo2"><span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><span style="mso-list: Ignore"><font size="5">1.2.1.</font><span new="" times="" style="FONT-WEIGHT: normal; FONT-SIZE: 7pt; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal">&nbsp;&nbsp; </span></span></span><font size="5"><span lang="EN-US">Context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"><font face="Arial">元素的属性</font></span></font></h3>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20.25pt"><font face="Arial"><font size="2"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">首先，假定我们这个元素是为一个名叫</span><span lang="EN-US"> FiberScheduler</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">的</span><span lang="EN-US">web</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">应用创建的，那么这个</span><span lang="EN-US">web</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">应用的放置路径应该是目录</span><span lang="EN-US"> ${tomcat6}/webapps/FiberScheduler</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">（当然，如果你使用的是</span><span lang="EN-US">war</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">包的话，那么就应该是</span> <span lang="EN-US">${tomcat6}/webapps/FiberScheduler.war </span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">文件了）。所以，我们的</span><span lang="EN-US">context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">元素应该指定属性</span><span lang="EN-US"> path=&rdquo;FiberScheduler&rdquo; docBase=&rdquo;FiberScheduler&rdquo;</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">。</span></font></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20.25pt"><font face="Arial"><font size="2"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">然后，这是一个可以动态重新加载的资源，所以我们应该指定属性</span><span lang="EN-US"> reloadable=&rdquo;true&rdquo;</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">。</span></font></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20.25pt"><font face="Arial"><font size="2"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">现在，我们的</span><span lang="EN-US">context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">元素的开始</span><span lang="EN-US">tag</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">看起来是这个样子：</span></font></font><span lang="EN-US"><o:p><font size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" align="center" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center"><span lang="EN-US" style="mso-no-proof: yes"></span></p>
<span lang="EN-US"><o:p><font size="3">
<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">&lt;</span><span class="tag-name">Context</span><span>&nbsp;</span><span class="attribute">path</span><span>=</span><span class="attribute-value">&quot;FiberScheduler&quot;</span><span>&nbsp; &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">docBase</span><span>=</span><span class="attribute-value">&quot;FiberScheduler&quot;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">debug</span><span>=</span><span class="attribute-value">&quot;5&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">reloadable</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">crossContext</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p class="MsoNormal" align="center" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center">&nbsp;</p>
<h3 style="MARGIN: 13pt 0cm 13pt 35.45pt; TEXT-INDENT: -35.45pt; mso-list: l0 level3 lfo2"><span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><span style="mso-list: Ignore"><font size="5">1.2.2.</font><span new="" times="" style="FONT-WEIGHT: normal; FONT-SIZE: 7pt; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal">&nbsp;&nbsp; </span></span></span><font size="5"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">这个</span><span lang="EN-US">context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">元素监视的引用元素定义文件</span></font></font></h3>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span></span></font><font size="2"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">我们还是要指定一个被监视的资源，在这个资源里面，会定义</span><span lang="EN-US">context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">中定义的那个资源被引用了。</span></font></font></p>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left"><font size="2"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">对我们的</span><span lang="EN-US">web</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">应用而已，这个被监视的资源当然是</span><span lang="EN-US"> web.xml </span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">文件，同时，也意味着我们应该在</span><span lang="EN-US"> web.xml </span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">中定义</span><span lang="EN-US">JNDI</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">资源引用元素。</span></font></font></p>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left"><font size="2"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">现在，我们的</span><span lang="EN-US">context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">元素有了一个子元素：</span></font></font><span lang="EN-US"><o:p><font size="3"></font></o:p></span><span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><span style="mso-list: Ignore"><font size="5"> </font></span></span></p>
<h3 style="MARGIN: 13pt 0cm 13pt 35.45pt; TEXT-INDENT: -35.45pt; mso-list: l0 level3 lfo2">
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">WatchedResource</span><span class="tag">&gt;</span><span>WEB-INF/web.xml</span><span class="tag"><span class="tag-name">WatchedResource</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span> </span></li>
</ol>
</div>
</h3>
<h3 style="MARGIN: 13pt 0cm 13pt 35.45pt; TEXT-INDENT: -35.45pt; mso-list: l0 level3 lfo2">1.2.3.</h3>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20.25pt; TEXT-ALIGN: left"><font face="Arial"><font size="2"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">我们的数据源是作为</span><span lang="EN-US">context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">中定义的一个资源存在的。当然，也还可以在</span><span lang="EN-US">context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">中定义其他的</span><span lang="EN-US">JNDI</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">资源。</span></font></font></p>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20.25pt; TEXT-ALIGN: left"><font face="Arial"><font size="2"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">我们先假定一些数据库的资源信息：我们需要配置一个</span><span lang="EN-US">oracle</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">的数据源名叫</span><span lang="EN-US">FiberSchedulerDS</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">，连接数据库的用户名是</span><span lang="EN-US"> user1</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">，密码是</span><span lang="EN-US"> password1</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">，数据库驱动程序是</span><span lang="EN-US">oracle.jdbc.OracleDriver</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">，数据流连接</span><span lang="EN-US">url</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">是</span><span lang="EN-US">jdbc:oracle:thin:@localhost:1521:fred</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">。那么，我们的资源定义元素看起来是这个样子：</span></font></font></p>
<font face="Arial"><font size="2"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">
<div class="code_title">xml 代码</div>
</span></font></font><span lang="EN-US"><o:p><font size="2">
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">Resource</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;FiberSchedulerDS&quot;</span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">auth</span><span>=</span><span class="attribute-value">&quot;Container&quot;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;javax.sql.DataSource&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">maxActive</span><span>=</span><span class="attribute-value">&quot;4&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">maxIdle</span><span>=</span><span class="attribute-value">&quot;30&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">maxWait</span><span>=</span><span class="attribute-value">&quot;5000&quot;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">username</span><span>=</span><span class="attribute-value">&quot;netgeo&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">password</span><span>=</span><span class="attribute-value">&quot;netgeo&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">driverClassName</span><span>=</span><span class="attribute-value">&quot;oracle.jdbc.OracleDriver&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">url</span><span>=</span><span class="attribute-value">&quot;jdbc:oracle:thin:@localhost:1521:fred&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center">&nbsp;</p>
<p class="MsoNormal" align="center" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center"><span lang="EN-US" style="mso-no-proof: yes"><font size="2"></font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20.25pt"><font face="Arial"><font size="2"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">我们可以在一个</span><span lang="EN-US">context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">元素中定义多个资源，格式类似。我在例子里面再定义一个叫做</span><span lang="EN-US">FiberSchedulerJbpmDS</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">的数据库连接池资源。</span></font></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font size="2"></font></o:p></span></p>
<h3 style="MARGIN: 13pt 0cm 13pt 35.45pt; TEXT-INDENT: -35.45pt; mso-list: l0 level3 lfo2"><span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><span style="mso-list: Ignore"><font size="5">1.2.4.</font><span new="" times="" style="FONT-WEIGHT: normal; FONT-SIZE: 7pt; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal">&nbsp;&nbsp; </span></span></span><font size="5"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">完整的</span><span lang="EN-US">context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">元素</span></font></font></h3>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20.25pt"><font size="3"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">好了，现在我们来看一看完整的</span><span lang="EN-US">context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">元素的样子：</span></font></font></p>
<font size="3"><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">
<div class="code_title">xml 代码</div>
</span></font></font><span lang="EN-US"><o:p><font size="3">
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">Context</span><span>&nbsp;</span><span class="attribute">path</span><span>=</span><span class="attribute-value">&quot;FiberScheduler&quot;</span><span>&nbsp; &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">docBase</span><span>=</span><span class="attribute-value">&quot;FiberScheduler&quot;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">debug</span><span>=</span><span class="attribute-value">&quot;5&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">reloadable</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">crossContext</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">WatchedResource</span><span class="tag">&gt;</span><span>WEB-INF/web.xml</span><span class="tag"><span class="tag-name">WatchedResource</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">Resource</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;FiberSchedulerDS&quot;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">auth</span><span>=</span><span class="attribute-value">&quot;Container&quot;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;javax.sql.DataSource&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">maxActive</span><span>=</span><span class="attribute-value">&quot;4&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">maxIdle</span><span>=</span><span class="attribute-value">&quot;30&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">maxWait</span><span>=</span><span class="attribute-value">&quot;5000&quot;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">username</span><span>=</span><span class="attribute-value">&quot;netgeo&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">password</span><span>=</span><span class="attribute-value">&quot;netgeo&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">driverClassName</span><span>=</span><span class="attribute-value">&quot;oracle.jdbc.OracleDriver&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">url</span><span>=</span><span class="attribute-value">&quot;jdbc:oracle:thin:@localhost:1521:fred&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">Resource</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;FiberSchedulerJbpmDS&quot;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">auth</span><span>=</span><span class="attribute-value">&quot;Container&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;javax.sql.DataSource&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">maxActive</span><span>=</span><span class="attribute-value">&quot;4&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">maxIdle</span><span>=</span><span class="attribute-value">&quot;30&quot;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">maxWait</span><span>=</span><span class="attribute-value">&quot;5000&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">username</span><span>=</span><span class="attribute-value">&quot;FiberSchedulerJBPM&quot;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">password</span><span>=</span><span class="attribute-value">&quot;FiberSchedulerJBPM&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">driverClassName</span><span>=</span><span class="attribute-value">&quot;oracle.jdbc.OracleDriver&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">url</span><span>=</span><span class="attribute-value">&quot;jdbc:oracle:thin:@localhost:1521:fred&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag"><span class="tag-name">Context</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
</ol>
</div>
<p class="MsoNormal" align="center" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center">&nbsp;</p>
<div class="code_title"></div>
<h1 style="MARGIN: 17pt 0cm 16.5pt 21.25pt; TEXT-INDENT: -21.25pt; mso-list: l0 level1 lfo2"><span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><span style="mso-list: Ignore">2.<span new="" times="" style="FONT-WEIGHT: normal; FONT-SIZE: 7pt; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal">&nbsp;&nbsp; </span></span></span><font face="Arial"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">然后，配置</span><span lang="EN-US">web</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">应用引用资源</span></font></h1>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><font face="Arial"><font size="2"><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">前面我们定义</span><span lang="EN-US">context</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">元素的时候，指定了一个监视资源。现在我们就需要在这个监视资源里面声明我们需要引用的</span><span lang="EN-US">JNDI</span><span style="FONT-FAMILY: 宋体; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">资源。</span></font></font></p>
</font></o:p></span></font></o:p></span></font></o:p></span>
          <br/>
          <span style="color:red;">
            <a href="http://frederick.javaeye.com/blog/117904#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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, 10 Oct 2007 13:58:00 +0800</pubDate>
        <link>http://frederick.javaeye.com/blog/117904</link>
        <guid>http://frederick.javaeye.com/blog/117904</guid>
      </item>
      <item>
        <title>jBPM的懒加载好像有问题</title>
        <author>Frederick</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://frederick.javaeye.com">Frederick</a>&nbsp;
          链接：<a href="http://frederick.javaeye.com/blog/117216" style="color:red;">http://frederick.javaeye.com/blog/117216</a>&nbsp;
          发表时间: 2007年08月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我在使用jBPM的时候，遇到一个问题。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我在一个方法里面需要创建一个任务的实例，使用了下面的代码：</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">private</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;test()&nbsp;{ &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;ProcessInstance&nbsp;processInstance&nbsp;=&nbsp;</span><span class="keyword">this</span><span>.getProcessInstance(0L); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;Token&nbsp;token&nbsp;=&nbsp;processInstance.getRootToken(); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;TaskNode&nbsp;taskNode&nbsp;=&nbsp;(TaskNode)&nbsp;token.getNode(); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;Task&nbsp;task&nbsp;=&nbsp;taskNode.getTask(</span><span class="string">&quot;taskName&quot;</span><span>); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;TaskMgmtInstance&nbsp;tmi&nbsp;=&nbsp;processInstance.getTaskMgmtInstance(); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;TaskInstance&nbsp;taskInstance&nbsp;=&nbsp;tmi.createTaskInstance(task,&nbsp;token); &nbsp;&nbsp;</span> </li>
    <li class=""><span>}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 结果却发现抛出了ClassCassException。原因是jBPM在加载ProcessInstance的时候，对 token 等懒加载了，所以返回的token以及由token得到的taskNode都是代理对象。这个代理对象是 Node 的子类，所以如果 token.getNode() 的结果不转换为 TaskNode 类型的话，是不会出错的。但是如果要转换为 TaskNode 类型，就会抛异常，尽管这个Node确实是 TaskNode 类型的。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 按理说，Hibernate对Node节点进行代理的时候，应该是用这个Node的实际类型（即Node的子类类型，比如TaskNode等）来代理的，而不应该用父类的类型（即Node类型）来代理。为什么还会这样呢？</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不知道有没有什么办法解决这个问题？ 我用了以下的方式来处理：</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>Task&nbsp;task&nbsp;=&nbsp;tmi.getTaskMgmtDefinition().getTask(</span><span class="string">&quot;taskName&quot;</span><span>);&nbsp;&nbsp;</span></span> </li>
</ol>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这样就不会有问题。</p>
          <br/>
          <span style="color:red;">
            <a href="http://frederick.javaeye.com/blog/117216#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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, 27 Aug 2007 17:05:00 +0800</pubDate>
        <link>http://frederick.javaeye.com/blog/117216</link>
        <guid>http://frederick.javaeye.com/blog/117216</guid>
      </item>
      <item>
        <title>生成基于 Oracle 的 jBPM 数据库脚本</title>
        <author>Frederick</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://frederick.javaeye.com">Frederick</a>&nbsp;
          链接：<a href="http://frederick.javaeye.com/blog/110472" style="color:red;">http://frederick.javaeye.com/blog/110472</a>&nbsp;
          发表时间: 2007年08月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 项目需要使用Oracle，发现jBPM没有提供基于Oracle 数据库的脚本，上网也没有找到可用的，就自己生成了一份。下面是步骤。这个是使用Ant来生成的。</p>
<span class="postbody">
<p><br />
1. 下载最新版本的 JBoss jBPM Starters kit。解压这个文件，假设解压目录为 &quot;${jbpm.starters.kit}&quot;，它的下面应该有 jbpm， <font face="Arial">jbpm-bpel，<font face="Arial">jbpm-db，<font face="Arial">jbpm-designer，<font face="Arial">jbpm-server 五个子目录。其中我们要用到的是 jbpm 和 jbpm-db两个目录。</font></font></font></font></p>
<p>2. 导航到 <font face="Arial">jbpm-db 子目录。在该目录下可以找到 build.properties 文件。</font><font face="Arial">这个文件需要作一定修改才能使用。</font></p>
<p><font face="Arial">&nbsp;&nbsp;&nbsp;&nbsp;找到下面的这段代码：</font></p>
<div class="code_title">js 代码</div>
<div class="dp-highlighter">
<ol class="dp-c">
    <li class="alt"><span><span>jbpm.3.location=C:/jbpm-X.X &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>upgrade.hibernate.properties=hsqldb/hibernate.properties &nbsp;&nbsp;</span> </li>
    <li class=""><span>upgrade.libdir=hsqldb/lib &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>upgrade.old.schema.script=hsqldb/upgrade.scripts/hsqldb.create.jbpm.3.0.2.sql &nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注意第一行，将 &ldquo;C:/jbpm-x.x&rdquo; 改成 &quot;${jbpm.starters.kit}/jbpm&quot;。</p>
<p><span class="postbody">3. 导航到&nbsp;jbpm 子目录。在 jbpm\src\config.files&nbsp;路径下可以找到 hibernate.cfg.xml 文件。这个文件需要修改和数据库连接相关的部分。</span></p>
<p><span class="postbody">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 找到下面这行代码：</span></p>
<span class="postbody">
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="comments"><!-- jdbc connection properties --></span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hibernate.dialect&quot;</span><span class="tag">&gt;</span><span>org.hibernate.dialect.HSQLDialect</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hibernate.connection.driver_class&quot;</span><span class="tag">&gt;</span><span>org.hsqldb.jdbcDriver</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hibernate.connection.url&quot;</span><span class="tag">&gt;</span><span>jdbc:hsqldb:mem:.;</span><span class="attribute">sql.enforce_strict_size</span><span>=</span><span class="attribute-value">true</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hibernate.connection.username&quot;</span><span class="tag">&gt;</span><span>sa</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hibernate.connection.password&quot;</span><span class="tag">&gt;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
</ol>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将其修改成 Oracle 的格式：</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="comments"><!-- jdbc connection properties --></span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hibernate.dialect&quot;</span><span class="tag">&gt;</span><span>org.hibernate.dialect.Oracle9Dialect</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hibernate.connection.driver_class&quot;</span><span class="tag">&gt;</span><span>oracle.jdbc.driver.OracleDriver</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hibernate.connection.url&quot;</span><span class="tag">&gt;</span><span>jdbc:oracle:thin@localhost:1521:fred</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hibernate.connection.username&quot;</span><span class="tag">&gt;</span><span>FiberSchedulerJBPM</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hibernate.connection.password&quot;</span><span class="tag">&gt;</span><span>FiberSchedulerJBPM</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span><span class="postbody">5. 导航到子目录 jbpm 下的路径 jbpm-db\oracle\lib，下载最新的 Oracle jdbc驱动程序（我使用的是 class14.jar），把它放在该路径下。</span> </li>
</ol>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其中 &quot;localhost&quot; 换成你自己的数据库所在的机器名（或者ip地址），&quot;fred&quot; 换成你自己的Oracle数据库的 SID 名字， 使用你自己的 Oracle 数据库用户名和密码来替换 &quot;FiberSchedulerJBPM&quot; 。</p>
<p>4. 导航到 jbpm-db 子目录，在 jbpm-db\oracle 路径下找到文件 hibernate.properties。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 找到下面这段代码：</p>
<div class="code_title">js 代码</div>
<div class="dp-highlighter">
<ol class="dp-c">
    <li class="alt"><span><span>hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>hibernate.connection.url=jdbc:oracle:thin@HOST:PORT:SID &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>hibernate.connection.username=USER &nbsp;&nbsp;</span> </li>
    <li class=""><span>hibernate.connection.password=PASSWORD &nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 根据你的数据库配置修改，我的修改如下：</p>
<div class="code_title">js 代码</div>
<div class="dp-highlighter">
<ol class="dp-c">
    <li class="alt"><span><span>hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>hibernate.connection.url=jdbc:oracle:thin:@localhost:1521:fred &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>hibernate.connection.username=FiberSchedulerJBPM &nbsp;&nbsp;</span> </li>
    <li class=""><span>hibernate.connection.password=FiberSchedulerJ