<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>Java论坛最新讨论 - JavaEye</title>
    <description>Java编程、Java Web开发、Java企业应用、Java设计模式、Java开源框架、Java应用服务器 <br/>
圈子: 
<a href="http://android.group.javaeye.com" target="_blank">Android</a>
<a href="http://jbpm.group.javaeye.com" target="_blank">JBPM</a>
<a href="http://jsfgroup.group.javaeye.com" target="_blank">JSF</a>
<a href="http://seam.group.javaeye.com" target="_blank">Seam</a>
<a href="http://tapestrying.group.javaeye.com" target="_blank">Tapestry</a>
<a href="http://grails.group.javaeye.com" target="_blank">Groovy</a>
<a href="http://lucene-group.group.javaeye.com" target="_blank">Lucene</a>
<a href="http://ecside.group.javaeye.com" target="_blank">GT-Grid</a>

 - Java编程，Ruby编程，微软.net，AJAX，敏捷软件开发，综合软件技术</description>
    <link>http://www.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>让你的 Ibatis2 也支持Annotation</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cnoss.javaeye.com">cnoss</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251047" style="color:red;">http://www.javaeye.com/topic/251047</a>&nbsp;
          发表时间: 2008年10月10日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong><span style="color: Blue">在支持xml配置方式的基础上增加了对annotation的支持，用户可以根据自己的喜好来选择或者两种方式并存。</span></strong><br /><br />详情请大家看：<a href="http://www.rest4g.org/viewthread.php?tid=12&amp;extra=page%3D1" target="_blank">http://www.rest4g.org/viewthread.php?tid=12&amp;extra=page%3D1</a><br /><br />代码示例如下：<br />Account.java<pre name="code" class="java">
package org.jrest4guice.persistence.ibatis;
public class Account {
  private int id;
  private String firstName;
  private String lastName;
  private String emailAddress;

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }

  public String getFirstName() {
    return firstName;
  }

  public void setFirstName(String firstName) {
    this.firstName = firstName;
  }

  public String getLastName() {
    return lastName;
  }

  public void setLastName(String lastName) {
    this.lastName = lastName;
  }

  public String getEmailAddress() {
    return emailAddress;
  }

  public void setEmailAddress(String emailAddress) {
    this.emailAddress = emailAddress;
  }

}
</pre>AccountService.java<pre name="code" class="java">
package org.jrest4guice.persistence.ibatis;

import java.sql.SQLException;
import java.util.List;

import org.jrest4guice.persistence.ibatis.annotations.Delete;
import org.jrest4guice.persistence.ibatis.annotations.IbatisDao;
import org.jrest4guice.persistence.ibatis.annotations.Insert;
import org.jrest4guice.persistence.ibatis.annotations.Result;
import org.jrest4guice.persistence.ibatis.annotations.ResultMap;
import org.jrest4guice.persistence.ibatis.annotations.Select;
import org.jrest4guice.persistence.ibatis.annotations.Update;
import org.jrest4guice.transaction.annotations.Transactional;
import org.jrest4guice.transaction.annotations.TransactionalType;

import com.google.inject.Inject;
import com.ibatis.sqlmap.client.SqlMapClient;

@IbatisDao
@SuppressWarnings("unchecked")
@Transactional
@ResultMap(id = "accountResultMap", result = {
		@Result(property = "id", column = "id"),
		@Result(property = "firstName", column = "firstName"),
		@Result(property = "lastName", column = "lastName"),
		@Result(property = "emailAddress", column = "emailAddress") }, resultClass = Account.class)
@Cachemodel(id = "account-cache", flushInterval = "24", flushOnExecute = {
		"insertAccount", "updateAccount", "deleteAccount" }, type = "LRU", 
		property = { @Property(name = "size", value = "100") })
public class AccountService {
	@Inject
	private SqlMapClient sqlMapper;

	@Select(id = "selectAllAccounts", sql = "select * from ACCOUNT", 
			resltMap = "accountResultMap", cacheModel = "account-cache")
	@Transactional(type = TransactionalType.READOLNY)
	public List&lt;Account> findAll() throws SQLException {
		return sqlMapper.queryForList("selectAllAccounts");
	}

	@Select(sql = "select id ,firstName,lastName,emailAddress from "
			+ "ACCOUNT where id = #id#")
	@Transactional(type = TransactionalType.READOLNY)
	public Account getAccountById(int id) throws SQLException {
		return (Account) sqlMapper.queryForObject("getAccountById", id);
	}

	@Insert(id = "insertAccount", sql = "insert into ACCOUNT (id,firstName,"
			+ "lastName,emailAddress) values (#id#, #firstName#, #lastName#, "
			+ "#emailAddress#)")
	public void createAccount(Account account) throws SQLException {
		sqlMapper.insert("insertAccount", account);
	}

	@Update(sql = "update ACCOUNT set firstName = #firstName#,lastName = "
			+ "#lastName#,emailAddress = #emailAddress# where id = #id#")
	public void updateAccount(Account account) throws SQLException {
		sqlMapper.update("updateAccount", account);
	}

	@Delete(id = "deleteAccount", sql = "delete from ACCOUNT where id = #id#")
	public void deleteAccount(int id) throws SQLException {
		sqlMapper.delete("deleteAccount", id);
	}

	@Select(id = "queryAccounts", 
		sql = "select * from ACCOUNT "
			+ "&lt;dynamic prepend=\"where\">"
			+ " &lt;isNotNull prepend=\"and\" property=\"firstName\">"
			+ "    firstName = #firstName#" 
			+ " &lt;/isNotNull>"
			+ " &lt;isNotNull prepend=\"and\" property=\"lastName\">"
			+ "    lastName = #lastName#" 
			+ " &lt;/isNotNull>"
			+ " &lt;isNotNull prepend=\"and\" property=\"emailAddress\">"
			+ "    emailAddress = #emailAddress#" 
			+ " &lt;/isNotNull>"
			+ "&lt;/dynamic> " 
			+ "order by lastName", resltMap = "accountResultMap", 
			cacheModel = "account-cache")
	@Transactional(type = TransactionalType.READOLNY)
	/**
	 * 动态SQL查询
	 */
	public List&lt;Account> queryAccounts(Account account) throws SQLException {
		return sqlMapper.queryForList("queryAccounts",account);
	}
}
</pre>AccountServiceTest.java<pre name="code" class="java">
package org.jrest4guice.persistence.ibatis;

import java.sql.SQLException;
import java.util.List;

import junit.framework.Assert;

import org.jrest4guice.guice.GuiceContext;
import org.jrest4guice.guice.PersistenceGuiceContext;
import org.junit.BeforeClass;
import org.junit.Test;

public class AccountServiceTest {
	private static AccountService service;

	@BeforeClass
	public static void setUp() throws Exception {
		// 初始化JRest4Guice
		PersistenceGuiceContext.getInstance().useIbatis(
				"org.jrest4guice.persistence.ibatis").init();
		// 获取服务
		service = GuiceContext.getInstance().getBean(AccountService.class);
	}

	@Test
	public void doTest() {
		List&lt;Account> accounts;
		try {
			Account account = new Account();
			account.setFirstName("张");
			account.setLastName("学友");
			account.setEmailAddress("jackey@rest4g.org");
			// 添加
			service.createAccount(account);

			account = new Account();
			account.setFirstName("刘");
			account.setLastName("学友");
			account.setEmailAddress("test@rest4g.org");
			// 添加
			service.createAccount(account);
			
			//查询（按lastName）
			Account queryCondition = new Account();
			queryCondition.setLastName("学友");
			accounts = service.queryAccounts(queryCondition);
			Assert.assertEquals(2, accounts.size());
			
			//查询（按firstName和lastName）
			queryCondition.setFirstName("张");
			accounts = service.queryAccounts(queryCondition);
			Assert.assertEquals(1, accounts.size());

			// 修改
			account = accounts.get(0);
			account.setFirstName("何");
			service.updateAccount(account);
			account = service.getAccountById(account.getId());
			Assert.assertNotNull(account);
			Assert.assertEquals("何", account.getFirstName());

			//查询所有
			accounts = service.findAll();
			Assert.assertEquals(2, accounts.size());

			// 删除
			for (Account ac : accounts){
				service.deleteAccount(ac.getId());
			}
			
			//断言删除的结果
			accounts = service.findAll();
			Assert.assertEquals(0, accounts.size());
		} catch (SQLException e) {
			Assert.fail(e.getLocalizedMessage());
		}
	}
}
</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251047" style="color:red;">已有 <strong>45</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 10 Oct 2008 07:17:02 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251047</link>
        <guid>http://www.javaeye.com/topic/251047</guid>
      </item>
          <item>
        <title>在web集群环境下如何实现网站全局变量</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shinewang.javaeye.com">shinewang</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251854" style="color:red;">http://www.javaeye.com/topic/251854</a>&nbsp;
          发表时间: 2008年10月12日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近正在开发一个网站，碰到一个关于web集群环境下全局变量实现的问题，例如网站是否开放用户注册，禁用的IP列表这类不经常更改却频繁调用的系统设置，如何实现才能保证不影响系统性能，并且修改后能及时更新到每台服务器？<br /><br />考虑想了几种方法：<br />1.存在数据库中，每次调用时去查数据库 <br />每次都需要查数据库会不会影响性能？<br /><br />2.存在数据库中，本地有一个config类作缓存，每隔一段时间调用计划任务和数据库同步一下<br />更新后同步到其他服务器需要一段时间，不是很及时<br /><br />3.存在数据库中，本地有一个config类作缓存，用JMS发送/接收更新数据<br />需要引入JMS<br /><br />4.直接写在config类中，不提供在web界面的修改配置，修改配置需要改写config类，然后重新部署到各服务器<br />修改配置需要修改代码，管理起来不方便，另外java的热部署只更新这个修改了的config类吗，会不会影响jvm里面其他的类，也就是会不会影响用户？<br /><br />5.存在配置文件中每次读文件，更新时同上一方案<br />性能？热部署？<br /><br />这个问题应该很简单吧，由于不是做互联网的，没什么经验。各位有什么好的想法？
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251854" style="color:red;">已有 <strong>3</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 12 Oct 2008 19:15:31 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251854</link>
        <guid>http://www.javaeye.com/topic/251854</guid>
      </item>
          <item>
        <title>IOC?真的IOC了？还是Factory?</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yananay.javaeye.com">yananay</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252235" style="color:red;">http://www.javaeye.com/topic/252235</a>&nbsp;
          发表时间: 2008年10月13日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在google上搜索 “spring ioc”，会出来一堆堆的搜索结果，随便点哪一个进去，都会看到这样的教程：<br /><br /><pre name="code" class="java">
ClassA a = (ClassA) beanFactory.getBean("A");
</pre><br /><br />ok, 教程中都说这是Spring的ioc用法， ClassA 是被 Spring管理的，ClassA中的需要set的变量都是“自动注入”的，例如：<br /><br /><pre name="code" class="java">
public class ClassA {
  private ClassB b;
  public void setB(ClassB b) {
    this.b = b;
  }
}
</pre><br /><br />所有的教程，文档，甚至Spring的文档，都说这是 <strong>IOC</strong>。<br /><br />但是很少有人提及这一点：<strong>beanFactory.getBean("A") 是一个工厂模式</strong>。<br /><br />前一阵经过梁兄的指点，俺才发现：<strong>这明明就是工厂模式呀</strong>！也就是说你要使用 IOC，前提是要使用工厂模式。虽然 ClassA 是被自动装配的，但那之前，你必须使用工厂模式来得到装配后的 ClassA。<br /><br />换个比喻来说：如果你要使用一个手枪，必须先用火柴去点燃手枪里的火药。<br /><br />不晓得大家对这个问题怎么个看法，至少俺觉得有些别扭，其实我们完全可以不使用工厂模式。考虑下面这个类：<br /><br /><pre name="code" class="java">
public class StandardConfiguration {

	private static Logger logger = Logger.getLogger(StandardConfiguration.class);
	
	private ImportBusiness importBusiness;
	
	public StandardConfiguration(BeanFactory beanFactory) {
		
		Method[] methods = getClass().getMethods();
		
		for(Method method : methods) {
			
			String methodName = method.getName();
			Class returnType = method.getReturnType();
			if(methodName.startsWith("get")) {
				
				String fieldName = getFieldName(methodName);
				
				Object bean = null;
				try {
					bean = beanFactory.getBean(fieldName);
					
				} catch (NoSuchBeanDefinitionException e) {
					
					logger.debug("StandardConfiguration - " + fieldName + " NoSuchBeanDefinitionException, ignore.");
					continue;
				}
				
				String setMethodName = "set" + createFieldMethodVar(fieldName);
				
				Method setMethod = null;
				try {
					setMethod = getClass().getMethod(setMethodName, new Class[]{returnType});
					setMethod.invoke(this, bean);
					
				} catch (NoSuchMethodException e) {
					
					logger.debug("StandardConfiguration - " + fieldName + " has no set method.");
					
				} catch (InvocationTargetException e) {
					
					logger.error("StandardConfiguration - " + fieldName + " invoke failed.");
				} catch (IllegalAccessException e) {
					
					logger.error("StandardConfiguration - " + fieldName + " IllegalAccessException.");
				}
			}
		}
		
	}
	
	private String getFieldName(String methodName) {
		
		String fieldName = methodName.substring(3, methodName.length());
		fieldName = fieldName.substring(0, 1).toLowerCase() +
						fieldName.substring(1, fieldName.length());
		
		return fieldName;
	}
	
	private String createFieldMethodVar(String fieldName) {
		
		return fieldName.substring(0, 1).toUpperCase() +
				fieldName.substring(1, fieldName.length());
	}

	public ImportBusiness getImportBusiness() {
		return importBusiness;
	}

	public void setImportBusiness(ImportBusiness business) {
		this.importBusiness = business;
	}
}
</pre><br /><br />这个类按照下面的方式来使用：<br /><br /><pre name="code" class="java">
StandardConfiguration config = new StandardConfiguration(beanFactory)
ImportBusiness importBusiness = config.getImportBusiness();
</pre><br /><br />其中 beanFactory 是 Spring 中的 BeanFactory，ImportBusiness 是一个普通的类。<br /><br />ok，我们避免了 beanFactory.getBean("A") 的用法，我可以说：<strong>当我 new 一个 StandardConfiguration 的时候，里面的变量都是自动注入的。</strong><br /><br />但是有人说：你这是穿裤子放屁--你不是还得使用 BeanFactory？<br /><br />没错，没错，这也是我想说的主要话题之一，<strong>如果 BeanFactory 能修改一下该多好</strong>！<br /><br />我设想的情况是这样使用：<br /><br /><pre name="code" class="java">
public class StandardConfiguration extends BeanFactory {
  private ImportBusiness importBusiness;
  public ImportBusiness getImportBusiness() {
    return importBusiness;
  }

  public void setImportBusiness(ImportBusiness business) {
     this.importBusiness = business;
  }
}
</pre><br /><br />这样当我 new 一个 StandardConfiguration 的时候，里面的变量就自动装配起来。这样的话，BeanFactory 似乎应该叫 BeanConfiguration 更好了。<br /><br />通过这样的方式，我们完全可以避免工厂模式的出现。这样做有什么好处呢：<br />1、避免了工厂模式的使用，单一的IOC更加简单。<br />2、避免了通过 bean name（beanFactory.getBean("A");） 来获得某一个对象。其实也就是避免了hardcode。
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252235" style="color:red;">已有 <strong>4</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 13 Oct 2008 15:08:41 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252235</link>
        <guid>http://www.javaeye.com/topic/252235</guid>
      </item>
          <item>
        <title>折腾百度空间</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://chbest.javaeye.com">chbest</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252287" style="color:red;">http://www.javaeye.com/topic/252287</a>&nbsp;
          发表时间: 2008年10月13日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          公司要做个人空间sns类似的模块.<br />最先考虑的就是百度空间.<br />自己有个百度空间的账号.<br />hi.baidu.com/水痕2000<br />无论在ie还是火狐上面敲,都能成功访问.一想百度还真厉害.这样也成?<br />utf-8 和gbk都处理的这么好<br />在接着:<br />申请账号:水痕水痕<br />申请gbk下'水痕水痕'对应的账号:姘寸棔姘寸棔<br />然后在ie和火狐下进入:<br />hi.baidu.com/水痕水痕 || hi.baidu.com/姘寸棔姘寸棔<br />发现hi.baidu.com/姘寸棔姘寸棔 在火狐下 是进入 水痕水痕 的空间;在ie下进入的姘寸棔姘寸棔的空间.<br />然后在姘寸棔姘寸棔空间下 点blog或者相册模块,又跑到 水痕水痕 里面去了.<br />得出结论:用中文名做url的path是不可取的.<br />1 百度默认连接是用gbk编码的<br />2 百度处理请求的时候,默认以utf-8进行转译,查询不到数据库在用gbk;<br />基本来说姘寸棔姘寸棔的空间很难点进去<br />最后放上连接:<br />http://hi.baidu.com/%E6%B0%B4%E7%97%95%E6%B0%B4%E7%97%95 <br />http://hi.baidu.com/%CB%AE%BA%DB%CB%AE%BA%DB<br />都是进一个空间
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252287" style="color:red;">已有 <strong>2</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 13 Oct 2008 15:59:23 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252287</link>
        <guid>http://www.javaeye.com/topic/252287</guid>
      </item>
          <item>
        <title>Ejb3.0--1</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xiaocong1001.javaeye.com">xiaocong1001</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252343" style="color:red;">http://www.javaeye.com/topic/252343</a>&nbsp;
          发表时间: 2008年10月13日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Ejb3.0--1<br />&nbsp; 今天学习了一下午的ejb3.0遇见了一些麻烦，拿出来和大家分享一下。以免大家以后遇到同样的问题<img src="/images/smiles/icon_razz.gif"/><br />&nbsp; A）首先，我下载了jboss服务器，这个是ejb的运行环境，必不可少。<br />&nbsp;&nbsp; B）我将他解压到/usr/jboos下，然后修改用户的profile文件vi /home/xiaocong/.bash_profile ；在里面添加<br />export JBOSS_HOME=/usr/jboss;<br />export PATH= $PATH:$JBOSS_HOME/bin;<br />(注）我已经安装了jdk1.5，并且已经设置好环境变量了，还要注意jboss文件夹的所有者啊！必要的时候使用root用户，chown一下。<br />C）ok，现在可以运行一下jboss了。<br />D）打开我的IDE，新建一个ejb工程HelloWorld。<br />E）创建个自己的包com.chenzhq.ejb.<br />F）创建一个无状态的会话bean(stateless session bean)的远程接口HelloWorldRemote.<br /><pre name="code" class="java">package com.chenzhq.ejb;

import javax.ejb.Remote;

@Remote ({HelloWorldRemote.class})
public interface HelloWorldRemote {

	   public String say(String name);
}</pre><br /><br />G）创建Remote接口的实现。<br /><pre name="code" class="java">package com.chenzhq.ejb;

import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;

@Stateless//注意这里啊
@Remote ({HelloWorldRemote.class})//注意这里啊

public class HelloWorld implements HelloWorldRemote {

	   public String say(String name){
		   System.out.println(HelloWorld.class.getCanonicalName());
		   return name;
	   }
}</pre><br />H）ok，写个ant脚本<br /><pre name="code" class="java">&lt;?xml version="1.0" encoding="UTF-8"?>
&lt;project name="ejb" default="jar">
  
  &lt;target name="jar">
      &lt;jar destfile="D:\work\lib\helloworld.jar">
          &lt;fileset dir="./classes">
             &lt;include name="**/*.class"/>
             &lt;include name="**/*.xml"/>
          &lt;/fileset>
      &lt;/jar>
  
  &lt;/target>

&lt;/project></pre><br />I）将helloworld.jar复制到/usr/jboss/server/all/deploy下。看看控制台是否有输出<br />15:40:51,714 INFO&nbsp; [JmxKernelAbstraction] installing MBean: jboss.j2ee:jar=helloworld.jar,name=HelloWorld,service=EJB3 with dependencies:<br />15:40:51,757 INFO&nbsp; [EJBContainer] STARTED EJB: com.chenzhq.ejb.HelloWorld ejbName: HelloWorld<br />15:40:51,781 INFO&nbsp; [EJB3Deployer] Deployed: file:/usr/jboss/server/default/deploy/helloworld.jar<br />如果有上面的输出，说明是成功部署了。<br />在ie里输入http://ip：port访问jboss的jmx-console点击service=jndiView，然后是点击Output JNDI info as text下的invoke，查找HelloWorld。<br />J）在client端调用ejb的代码。<br /><pre name="code" class="java">package com.chenzhq;

import java.util.Properties;

import javax.naming.InitialContext;
import javax.naming.NamingException;

import com.chenzhq.ejb.HelloWorldRemote;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Properties props = new Properties();
		props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
		props.setProperty("java.naming.provider.url", "jnp://192.168.0.2:1099");//这里是我部署ejb的主机地址。
		props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming"); 
		
		try {
			InitialContext ic = new InitialContext(props);
			HelloWorldRemote hwr = ((HelloWorldRemote)ic.lookup("HelloWorld/remote"));
			System.out.println(hwr.say("chenzhq"));
			
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			System.out.print(e);
			e.printStackTrace();
		}
		
		// 

	}

}</pre><br />Ok了，待续。。。。。。。。。。。。 :D&nbsp; :D&nbsp; :D&nbsp; :D&nbsp;<img src="/images/smiles/icon_biggrin.gif"/>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252343" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 13 Oct 2008 17:57:49 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252343</link>
        <guid>http://www.javaeye.com/topic/252343</guid>
      </item>
          <item>
        <title>(已经搞定了!)用polish框架启动模拟器，RMS不能用？怎么办，难道非要到手机上测试RMS？</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hypercube1024.javaeye.com">hypercube1024</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252337" style="color:red;">http://www.javaeye.com/topic/252337</a>&nbsp;
          发表时间: 2008年10月13日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          用ant emulator启动模拟器，像下面这样的就会报异常，难道非要到手机上面测试，还是要在polish里配置什么东东？<br /><pre name="code" class="java">
private void saveNote(Note note) {
	Vector notes = new Vector();
	notes.addElement(note);
	try {
		storage.save(notes, "notes");
	} catch (IOException e) {
		e.printStackTrace();
	}
}

Note note = new Note("xxxx", "yyyy");
saveNote(note);
</pre><br /><br />日志里面报下面的异常是什么原因啊<br />[j2mepolish] Generic/AnyPhone: java.io.IOException: Cannot serialize org.qpt.Note<br />[j2mepolish] Generic/AnyPhone:&nbsp; at de.enough.polish.io.Serializer.serialize(+1548)<br />[j2mepolish] Generic/AnyPhone: Serializer.java:454: throw new IOException("Cannot serialize " + object.getClass().getName() );<br />[j2mepolish] Generic/AnyPhone:&nbsp; at de.enough.polish.io.Serializer.serialize(+814)<br />[j2mepolish] Generic/AnyPhone: Serializer.java:320: serialize( vector.elementAt(i), out );<br />[j2mepolish] Generic/AnyPhone:&nbsp; at de.enough.polish.io.RmsStorage.save(+24)<br />[j2mepolish] Generic/AnyPhone: RmsStorage.java:225: byte[] data = byteOut.toByteArray();<br />[j2mepolish] Generic/AnyPhone:&nbsp; at org.qpt.MyPolish.saveNote(+23)<br />[j2mepolish] Generic/AnyPhone: Decompiled stack-trace: storage.save(notes, "notes");<br />[j2mepolish]&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp; 7&nbsp;&nbsp; 13:aload_0<br />[j2mepolish]&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp; 8&nbsp;&nbsp; 14:getfield&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #29&nbsp; &lt;Field RmsStorage storage><br />[j2mepolish]&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp; 9&nbsp;&nbsp; 17:aload_2<br />[j2mepolish]&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp; 10&nbsp;&nbsp; 18:ldc1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #165 &lt;String "notes"><br />[j2mepolish]&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp; 11&nbsp;&nbsp; 20:invokevirtual&nbsp;&nbsp; #169 &lt;Method void RmsStorage.save(Object, String)><br />[j2mepolish]<br />[j2mepolish] Generic/AnyPhone:&nbsp; at org.qpt.MyPolish.editFormAction(+44)<br />[j2mepolish] Generic/AnyPhone: [javac] D:\develop\myProject\myPolish\source\src\org\qpt\MyPolish.java:75: saveNote(note);<br />[j2mepolish] Generic/AnyPhone:&nbsp; at org.qpt.MyPolish.commandAction(+38)<br />[j2mepolish] Generic/AnyPhone: [javac] D:\develop\myProject\myPolish\source\src\org\qpt\MyPolish.java:44: editFormAction(cmd, disp);<br />[j2mepolish] Generic/AnyPhone:&nbsp; at de.enough.polish.ui.Screen.handleCommand(+52)<br />[j2mepolish] Generic/AnyPhone: Decompiled stack-trace: flag = true;<br />[j2mepolish]&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp; 28&nbsp;&nbsp; 52:iconst_1<br />[j2mepolish]&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp; 29&nbsp;&nbsp; 53:istore_3<br />[j2mepolish]<br />[j2mepolish] Generic/AnyPhone:&nbsp; at de.enough.polish.ui.Screen$ForwardCommandListener.commandAction(+8)<br />[j2mepolish] Generic/AnyPhone:&nbsp; at de.enough.polish.ui.Screen.callCommandListener(+24)<br />[j2mepolish] Generic/AnyPhone: Screen.java:3499: this.forwardCommandListener.commandAction(cmd, this );<br />[j2mepolish] Generic/AnyPhone:&nbsp; at de.enough.polish.ui.CommandItem.handleKeyReleased(+283)<br />[j2mepolish] Generic/AnyPhone: CommandItem.java:398: return true;<br />[j2mepolish] Generic/AnyPhone:&nbsp; at de.enough.polish.ui.Container.handleKeyReleased(+30)<br />[j2mepolish] Generic/AnyPhone: Container.java:1645: if ( item.handleKeyReleased( keyCode, gameAction ) ) {<br />[j2mepolish] Generic/AnyPhone:&nbsp; at de.enough.polish.ui.MenuBar.handleKeyReleased(+101)<br />[j2mepolish] Generic/AnyPhone: MenuBar.java:1357: boolean handled = this.commandsContainer.handleKeyReleased(keyCode, gameAction);<br />[j2mepolish] Generic/AnyPhone:&nbsp; at de.enough.polish.ui.Screen.keyReleased(+128)<br />[j2mepolish] Generic/AnyPhone: Screen.java:2701: if (keyCode == this.triggerReleasedKeyCode) {<br />[j2mepolish] Generic/AnyPhone:&nbsp; at de.enough.polish.ui.MasterCanvas.keyReleased(+23)<br />[j2mepolish] Generic/AnyPhone: MasterCanvas.java:174: return;<br />[j2mepolish] Generic/AnyPhone:&nbsp; at javax.microedition.lcdui.Canvas.callKeyReleased(+19)<br />[j2mepolish] Generic/AnyPhone:&nbsp; at javax.microedition.lcdui.Display$DisplayAccessor.keyEvent(+206)<br />[j2mepolish] Generic/AnyPhone:&nbsp; at javax.microedition.lcdui.Display$DisplayManagerImpl.keyEvent(+11)<br />[j2mepolish] Generic/AnyPhone:&nbsp; at com.sun.midp.lcdui.DefaultEventHandler.keyEvent(+127)<br />[j2mepolish] Generic/AnyPhone:&nbsp; at com.sun.midp.lcdui.AutomatedEventHandler.keyEvent(+210)<br />[j2mepolish] Generic/AnyPhone:&nbsp; at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.handleVmEvent(+114)<br />[j2mepolish] Generic/AnyPhone:&nbsp; at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(+57)
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252337" style="color:red;">已有 <strong>1</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 13 Oct 2008 17:43:53 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252337</link>
        <guid>http://www.javaeye.com/topic/252337</guid>
      </item>
          <item>
        <title>Java是在绕圈子吗——关于Hibernate Annotation的疑问</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://iking.javaeye.com">iKing</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252342" style="color:red;">http://www.javaeye.com/topic/252342</a>&nbsp;
          发表时间: 2008年10月13日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一直想不明白：<br />EJB2.0中对Entity对象侵入的“危害”，以及Domain model的复用，早期的Hibernate的版本使用**.hbm.xml映射文件使Domian model变得非常简单干净。<br />Annotation的出现，使映射信息再次回到了实体对象之中，这样对实体对象进行复用的时候又要重新修改原有的实体对象的Java文件（尽管仅仅是metadata），但实际感觉仅仅是将对侵入的Java代码的修改变成了对metadata的修改！<br />不知道其中的利弊到底在哪里？
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252342" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 13 Oct 2008 17:56:51 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252342</link>
        <guid>http://www.javaeye.com/topic/252342</guid>
      </item>
          <item>
        <title>hibernate多对多问题</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liliang1222.javaeye.com">liliang1222</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252326" style="color:red;">http://www.javaeye.com/topic/252326</a>&nbsp;
          发表时间: 2008年10月13日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          adverties.hbm.xml<br />		&lt;set name="items" table="item_adverties_link" catalog="vikoolcn"<br />			cascade="save-update" lazy="false" inverse="true"><br />			&lt;key column="id">&lt;/key><br />			&lt;many-to-many column="itemId"<br />				class="com.vikool.company.model.Item"><br />			&lt;/many-to-many><br />		&lt;/set><br /><br />item.hbm.xml<br />		&lt;set name="ads" table="item_adverties_link" catalog="vikoolcn"<br />			cascade="save-update" lazy="false"><br />			&lt;key column="id">&lt;/key><br />			&lt;many-to-many column="advertiesId"<br />				class="com.vikool.company.model.Adverties"><br />			&lt;/many-to-many><br />		&lt;/set><br /><br />item_adverties_link表就有itemId和advertiesId两个字段<br /><br />他老报unknown column 'ads0_.id' in 'field list'<br /><br />我之前item_adverties_link表是id,itemid,advertiesid三个字段，可他老是前两个字段对应，所以我把id字段删了，结果出现这个问题了 ，请大家看看哪里错了
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252326" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 13 Oct 2008 17:04:36 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252326</link>
        <guid>http://www.javaeye.com/topic/252326</guid>
      </item>
          <item>
        <title>SPRING的AOP不适合多线程应用？</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dmtm.javaeye.com">大猫汤姆</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251923" style="color:red;">http://www.javaeye.com/topic/251923</a>&nbsp;
          发表时间: 2008年10月12日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          如题，<br />我的理解是：AOP代理对像实例化所花费的开销比较大，而且是非线程安全的，<br />所以线程安全的解决办法：<br />方法一：使用时要么每次都NEW一个，这样的用一次就扔掉我认为是对资源的浪费。<br />方法二：在应用中适当的地方加同步进行排队。这样虽然减小了开消，但是对线程高并发的情况肯定是个瓶颈。<br />我目前对SPRING的观点是：<br />SPRING是一种解决问题的办法,方案，一种思想。<br /><br />IOC 只有IOC是个很不错的东西。但是如果不使用AOP的话IOC好像没什么价值，只是换个角度去解决问题。<br /><br />AOP 如果不在乎机器资源的开消问题才可以使用，以灵活性换取性能。小型应用没必要使用，流量大的门户网站不能使用。<br /><br />MVC 愿意用就用。<br /><br />对HIBERNATE，JDBC，MAIL的封装等&nbsp; 我认为没有必要，完全可以自己来实现，这样更清楚，更容易撑握应用程序。看到SPRING把这些东西包裹起来从心底感到恶心。比如封装HIBERNATE时，获取Session里用到的threadLocal，这东西被封装了起来，客户端程序员想用的时候只能新创建一个,THREADLOCAL对性能是有一定的影响的(虽然JDK1.5已经很好的优化了)，一个就够了。<br /><br />感觉SPRING就是狗皮膏药，做救 急的东西，在不修改源代码的情况下拦腰插入一些代码，因为实际上线的应用程序中大家都不敢修改源代码，修改源代码非常危险麻烦,整个应用还需要反复测试，所以用AOP来支撑。
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251923" style="color:red;">已有 <strong>5</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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>Sun, 12 Oct 2008 21:51:39 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251923</link>
        <guid>http://www.javaeye.com/topic/251923</guid>
      </item>
          <item>
        <title>现在用grails来做项目是不是太激进</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://vansention.javaeye.com">范三山</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250349" style="color:red;">http://www.javaeye.com/topic/250349</a>&nbsp;
          发表时间: 2008年10月08日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          现在要做一个互联网的项目，不是很大。人员大概就是两个java程序员，美工另算。我一直以为，用java来做中小型的互联网项目不是一个明智的选择。这个项目如果我们按照以往的方法不外乎是struts2+spring+hibernate，我觉得效率不是很高。<br />&nbsp;&nbsp;&nbsp; 我前一段时间自己弄过一下grails，写了一个blog程序，感觉非常棒。我想这个项目用grails十分的不错，因为时间比较紧，用grails来做会非常的快。但是我现在有一些担心<br />&nbsp;&nbsp;&nbsp; 1.grails的性能问题，不过我不太相信瓶颈会出现在程序端，怎么说也是数据库先有瓶颈。<br />&nbsp;&nbsp;&nbsp; 2.将来的维护问题，如果我们不在了维护的人还得学grails。<br />&nbsp;&nbsp;&nbsp; 3.ide不怎么好用，几乎是完全没有作用。我写grails程序一般用netbeans，不知道那位老兄会不会不习惯。IntelliJ IDEA是不会考虑的，实在没有兴趣去搞注册码。<br />&nbsp;&nbsp;&nbsp; 虽然很看好grails，但是还是会有些担心，不知道大家怎么看的。
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/250349" style="color:red;">已有 <strong>50</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 08 Oct 2008 15:47:12 +0800</pubDate>
        <link>http://www.javaeye.com/topic/250349</link>
        <guid>http://www.javaeye.com/topic/250349</guid>
      </item>
          <item>
        <title>Tomcat+apr 的问题[已解决]</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mickypc.javaeye.com">mickypc</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252302" style="color:red;">http://www.javaeye.com/topic/252302</a>&nbsp;
          发表时间: 2008年10月13日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          环境：<br />CentOS release 4.4 (Final)<br />Linux test 2.6.9-42.ELsmp #1 SMP Tue Aug 15 10:35:26 BST 2006 x86_64 x86_64 x86_64 GNU/Linux<br />java version "1.6.0_02"<br />tomcat 5.5.23<br />apr 1.3.3<br /><br />tomcat和apr都顺利安装了，apr装在了/usr/local/apr下面了，然后编译tomcat-native,./configure --with-apr=/usr/local/apr, make &amp; make install也很顺利，在catalina.sh中加上了CATALINA_OPTS="$CATALINA_OPTS "-Djava.library.path=/usr/local/apr/lib，但是启动tomcat的时候仍然说找不到native:<br />INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/local/apr/lib<br /><br />这是什么问题呢？？大家配这个ａｐｒ都很容易就配好了吗？？<br /><br />我后来在java/lib下做了libtcnative-1.so　-> /usr/local/apr/lib/libtcnative-1.so的连接, 把CATALINA_OPTS="$CATALINA_OPTS "-Djava.library.path=/usr/local/apr/lib这句去掉后还是不行: <br />INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /opt/java/1.6.0_02/jre/lib/i386/server:/opt/java/1.6.0_02/jre/lib/i386:/opt/java/1.6.0_02/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib<br /><br /><br />===================================<br />贴出来就知道错了:我的java版本不是64位的,换成64位就好了。马虎阿马虎阿 :oops:&nbsp;<img src="/images/smiles/icon_cry.gif"/>搞了两天。
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252302" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 13 Oct 2008 16:20:28 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252302</link>
        <guid>http://www.javaeye.com/topic/252302</guid>
      </item>
          <item>
        <title>JBoss JGroup UDP配置</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://il-o.javaeye.com">il_o</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252030" style="color:red;">http://www.javaeye.com/topic/252030</a>&nbsp;
          发表时间: 2008年10月13日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          我想做一个JBoss的Hotstandby, 但在jboss-cluster.xml里UDP要设置mcast_addr,查了一个好像要是一个支持IP多播的主机地址,现在,我想设置ip_mcast="false",也就是不用IP多播.但设完了,集群也发现不了了.还有哪些地方要配置啊？<br /><br />分布式,偶还很新,希望大家可以不吝经验,多多指教.<br /><br />另,有没有办法,可以注册到HAMembershipListener,因为加载类的CLASSLOADER,不一样.我现在只能起一个线程,不断的读MBean ClusterPartition 的属性"CurrentView",然后自己做一个Listener，有其它的接口吗？
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252030" style="color:red;">已有 <strong>1</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 13 Oct 2008 10:14:48 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252030</link>
        <guid>http://www.javaeye.com/topic/252030</guid>
      </item>
          <item>
        <title>Pomer：基于Flex和Java EE的信息管理系统基础框架</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ke2000.javaeye.com">ke2000</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/249587" style="color:red;">http://www.javaeye.com/topic/249587</a>&nbsp;
          发表时间: 2008年10月06日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Pomer是几个无聊的人利用业余时间做的希望不是无聊的一个基础框架：），目前的功能还不完整，不过我们这几个无聊的人会继续做下去，现在推出的版本功能：一个可以运行的基础框架和代码生成器。<br />&nbsp;&nbsp;&nbsp; 欢迎大家试用，欢迎拍砖 ^_^,以下是简单的介绍和说明，详细请访问:<a href="http://www.pomer.org.cn" target="_blank">http://www.pomer.org.cn</a><br />&nbsp;&nbsp;&nbsp; * Flex 开发框架 <br />Pomer主要采用spring和hibernate做为后台框架，通过blazeds(LCDS)RemoteObject?与java后台通信，前台采用Cairngorm MVC框架， Pomer框架主要作用就是简化blazeds(LCDS)RemoteObject的访问方式，提高开发效率。Pomer通过注解 (Annotation)将普通java对象，Spring Bean和EJB发布为远程对象（RemoteObject）提供给flex访问，而不需要进行任何配置 。<br /><br />&nbsp;&nbsp;&nbsp; * 代码生成器 <br />Pomer 代码生成器包括两个部分，一个是强大灵活通用代码生成器模型和一套基于Pomer的默认模板。 Pomer通用代码生成器采用freemark做为模板引擎，可以生成任何基于数据表或javaPojo和java接口的代码，用户只需提供 freemark的模板即可。 Pomer提供的默认生成功能和默认模板可以通过数据库生成基于Pomer框架可运行的增删改查代码，也可以从javaBean生成 RemoteObject的数据传输对象、表单和列表，还能通过java接口生成Cairngorm的框架代码。<br />&nbsp;&nbsp; <img src="http://lh4.ggpht.com/yulinlincom/SOGFRdmtH5I/AAAAAAAAAcA/OZkaarZMgFU/s576/pomerUserIndex.JPG" />
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/249587" style="color:red;">已有 <strong>35</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 06 Oct 2008 22:32:11 +0800</pubDate>
        <link>http://www.javaeye.com/topic/249587</link>
        <guid>http://www.javaeye.com/topic/249587</guid>
      </item>
          <item>
        <title>史上最简单的方法复制或迁移Oracle数据库</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tanw.javaeye.com">txswei</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252244" style="color:red;">http://www.javaeye.com/topic/252244</a>&nbsp;
          发表时间: 2008年10月13日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          　　在DBA的日常工作中，经常需要重装或在新机器上安装Oracle,但每次安装所浪费的时间、精力以及失败的挫折都在考验着DBA的承受能力，本文着重介绍了一个简单的复制和迁移Oracle数据库的方法，详细内容请参考下文。<br /><br /><br />　　复制迁移的步骤如下： <br />　　◆1、首先，复制原Oracle数据库的安装目录到新机器或系统中的安装目录，注意目录要一致，盘符也要一致。<br /> <br />　　◆2、假如Oracle的安装目录不在Program Files系统文件夹下，我们需要把原系统中的Program Files文件夹下的Oracle目录也复制到新系统的Program Files文件夹中去。<br /><br />　　◆3、导出原系统中的Oracle注册表信息，主要注册信息如下：<br /> <br />　　A. HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE <br />　　B.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 下有关Oracle的所有键，通常包括以下9个： <br />　　\OracleMTSRecoveryService <br />　　\OracleOraHome92Agent <br />　　\OracleOraHome92ClientCache <br />　　\OracleOraHome92HTTPServer <br />　　\OracleOraHome92PagingServer <br />　　\OracleOraHome92SNMPPeerEncapsulator <br />　　\OracleOraHome92SNMPPeerMasterAgent <br />　　\OracleOraHome92TNSListener <br />　　\OracleServiceORA8<br /><br />　　◆4、注意：有多少个数据库，注册表服务键下的OracleServiceXXX就会有多个。其中最主要的有监听服务和数据库服务，即OracleOraHome92TNSListenerXXX和OracleServiceXXX。<br /><br />　　◆5、将导出的所有注册表的信息在新的系统中导入（注册）。<br /><br />　　◆6、设置系统环境变量，打开"我的电脑"的"属性"界面，在"高级"而点击"环境变量"进入设置，找到[Path]系统变量项目，点"编辑"，在变量值的输入框的最后，加入";ORACLE的安装目录"。<br /><br />　　◆7、最后我们需要进入 C:\Documents and Settings\All Users\Start Menu\Programs下把 Oracle - OraHome92 和 Oracle Installation Products 两个菜单文件夹也复制到新系统中，此时，就和新安装的一样了。重启系统后，成功完成。<br />原文地址：http://www.51xit.com/www/s28/s32/2692.html
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252244" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 13 Oct 2008 15:21:51 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252244</link>
        <guid>http://www.javaeye.com/topic/252244</guid>
      </item>
          <item>
        <title>window2003下tomcat6.1.8+apr+jdk1.6真是画蛇添足</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zb1015.javaeye.com">zb1015</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252241" style="color:red;">http://www.javaeye.com/topic/252241</a>&nbsp;
          发表时间: 2008年10月13日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          加上apr反而慢了,看来jdk1.6真不是吹的呀
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252241" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 13 Oct 2008 15:16:38 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252241</link>
        <guid>http://www.javaeye.com/topic/252241</guid>
      </item>
          <item>
        <title>hibernate-memcached补丁：支持Whalin的MemCached Java客户端</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://movingboy.javaeye.com">movingboy</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250534" style="color:red;">http://www.javaeye.com/topic/250534</a>&nbsp;
          发表时间: 2008年10月09日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>hibernate-memcached（<a href="http://code.google.com/p/hibernate-memcached/" target="_blank">http://code.google.com/p/hibernate-memcached/</a>）是允许hibernate使用MemCached作为二级缓存的项目，它用到了spymemcached（<a href="http://code.google.com/p/spymemcached/" target="_blank">http://code.google.com/p/spymemcached/</a>）这个MemCached的Java客户端。花了一点时间做了个补丁，让它也支持Whalin的Java客户端（<a href="http://whalin.com/memcached/" target="_blank">http://whalin.com/memcached/</a>）。<br /><br />所有的代码（包括原hibernate-memcached的所有源码）、javadoc及重新制作的发布包请见附件，限于篇幅就不具体说明了。以下是我更新过的hibernate-memcached的配置说明，原配置说明请参见<a href="http://code.google.com/p/hibernate-memcached/wiki/Configuration" target="_blank">http://code.google.com/p/hibernate-memcached/wiki/Configuration</a></p>
<p>&nbsp;</p>
<h2><a id="Adding_hibernate-memcached_to_your_application">Adding hibernate-memcached to your application</a></h2>
<p><a id="Adding_hibernate-memcached_to_your_application">If you are using Maven2 for your application build you can follow the instructions on the  </a><a href="file:///p/hibernate-memcached/wiki/MavenRepository">MavenRepository</a>
page. For those that aren't using Maven2 you'll need to collect a few
simple jars for yourself. I am going to assume you already have
hibenrnate3 setup before you came here. </p>
<p>You'll need...
 	</p>
<ul>
<li>hibernate-memcached-&lt;version&gt;.jar </li>
<li><a href="http://repo1.maven.org/maven2/commons-codec/commons-codec/1.3/commons-codec-1.3.jar" rel="nofollow">commons-codec 1.3</a> </li>
<li><a href="http://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.5.0/slf4j-api-1.5.0.jar" rel="nofollow">slf4j-1.5.0.jar</a> </li>
<li>An slf4j implementation for your preferred logging framework. For log4j you can use <a href="http://repo1.maven.org/maven2/org/slf4j/slf4j-log4j12/1.5.0/slf4j-log4j12-1.5.0.jar" rel="nofollow">slf4j-log4j12-1.5.0.jar</a>. </li>
</ul>
<p>If you are using <a href="http://code.google.com/p/spymemcached/">spymemcached</a> as the MemCached client, you also need
 	</p>
<ul>
<li><a href="http://spymemcached.googlecode.com/files/memcached-2.1.jar" rel="nofollow">memcached-2.1.jar</a> </li>
<li><a href="http://bleu.west.spy.net/%7Edustin/repo/spy/jars/spy-2.4.jar" rel="nofollow">spy-2.4.jar</a> </li>
</ul>
<p><span style="color: #0000ff;">or if you prefer Whalin's</span> <a href="http://whalin.com/memcached/">memcached client for java</a><span style="color: #0000ff;">, you need to download java_memcached-release_2.0.1.jar from the</span> <a href="http://whalin.com/memcached/#download">download page</a> <span style="color: #0000ff;">according to your Java VM version.</span>
</p>
<h2><a id="Configuring_Hibernate">Configuring Hibernate</a></h2>
<p><a id="Configuring_Hibernate">The first thing to do is to tell hibernate which cache provider you'd like to use, and to enable the second level cache.
	</a></p>
<table border="0">
<tbody>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;">hibernate.cache.provider_class</td>
<td style="border: 1px solid #aaaaaa; padding: 5px;">com.googlecode.hibernate.memcached.MemcachedCacheProvider</td>
</tr>
</tbody>
</table>
<p><a id="Configuring_Hibernate">Using just the property above you get
basic entity caching by default. The hibernate-memcached library
supports query caching, but you have to enable query caching
separately. </a></p>
<table border="0">
<tbody>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;">hibernate.cache.use_query_cache</td>
<td style="border: 1px solid #aaaaaa; padding: 5px;">true</td>
</tr>
</tbody>
</table>
<p><a id="Configuring_Hibernate">!Now you can start setting up the
hibernate-memcached specific properties. The hibernate-memcached
properties are divided into two categories; cache-wide settings and
cache-region settings. </a></p>
<h3><a id="Cache_Wide_Settings">Cache Wide Settings</a></h3>
<p><a id="Cache_Wide_Settings">The cache wide settings all have
defaults can mostly be overwritten at a cache-region level. For both
spymemcached and Whalin's client, you can set: </a></p>
<table border="0">
<tbody>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> <strong>Property</strong> </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> <strong>Default</strong> </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> <strong>Description</strong> </td>
</tr>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> hibernate.memcached.servers </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> localhost:11211 </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> Space delimited list of memcached instances in host:port format </td>
</tr>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> hibernate.memcached.cacheTimeSeconds </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> 300 </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> The default number of seconds items should be cached. Can be overriden at the regon level. </td>
</tr>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> hibernate.memcached.keyStrategy </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> HashCodeKeyStrategy </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> Sets the strategy class to to use for generating cache keys. Must provide a class name that implements KeyStrategy </td>
</tr>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> hibernate.memcached.clearSupported </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> false </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;">
Enables support for the MemcachedCache.clear() method for all cache
regions. The way clear is implemented for memcached is expensive and
adds overhead to all get/set operations. It is not recommended for
production use. </td>
</tr>
</tbody>
</table>
<p><a id="Cache_Wide_Settings">For spymemcached, you can set:
	</a></p>
<table border="0">
<tbody>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> hibernate.memcached.readBufferSize </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> DefaultConnectionFactory.DEFAULT_READ_BUFFER_SIZE </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> The read buffer size for each server connection from this factory </td>
</tr>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> hibernate.memcached.operationQueueLength </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> DefaultConnectionFactory.DEFAULT_OP_QUEUE_LEN </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> Maximum length of the operation queue returned by this connection factory </td>
</tr>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> hibernate.memcached.operationTimeout </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> DefaultConnectionFactory.DEFAULT_OPERATION_TIMEOUT </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> Default operation timeout in milliseconds </td>
</tr>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> hibernate.memcached.hashAlgorithm </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> HashAlgorithm.KETAMA_HASH </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;">
Which hash algorithm to use when adding items to the cache. Note: the
MemcachedClient defaults to using HashAlgorithm.NATIVE_HASH, while the
hibernate-memcached cache defaults to KETAMA_HASH for "consistent
hashing" </td>
</tr>
</tbody>
</table>
<p><span style="color: #0000ff;"><a id="Cache_Wide_Settings">For Whalin's client, you can set:
	</a></span></p>
<table border="0">
<tbody>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> hibernate.memcached.weights </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;">  <span style="color: #0000ff;"></span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> Space delimited list of server weights. If not set, all servers get the same weight </span></td>
</tr>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> hibernate.memcached.errorHandler </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> com.googlecode.hibernate.memcached.<br />dangamemcached.SimpleErrorHandler </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> Error handler used by Whalin's client internally</span></td>
</tr>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> hibernate.memcached.poolName </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> default </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> The name of SockIOPool </span></td>
</tr>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> hibernate.memcached.initConn </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> 1 </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> Initial pool size </span></td>
</tr>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> hibernate.memcached.minConn </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> 1 </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> Min pool size </span></td>
</tr>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> hibernate.memcached.maxConn </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> 10 </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> Max pool size </span></td>
</tr>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> hibernate.memcached.maxIdle </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> 3000000 </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> Max idle time for available sockets. Default 5 minutes </span></td>
</tr>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> hibernate.memcached.socketTimeout </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> 30000 </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> Default timeout of socket reads. Default 30 seconds </span></td>
</tr>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> hibernate.memcached.socketConnectTimeout </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> 3000 </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> Default timeout of socket connections. Default 3 seconds </span></td>
</tr>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> hibernate.memcached.maintSleep </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> 30000 </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> Maintenance thread sleep time. Default 30 seconds </span></td>
</tr>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> hibernate.memcached.compressEnable </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> true </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> If compression enabled </span></td>
</tr>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> hibernate.memcached.defaultEncoding </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> UTF-8 </span></td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"><span style="color: #0000ff;"> Default encoding </span></td>
</tr>
</tbody>
</table>
<h3><a id="Cache_Region_Settings">Cache Region Settings</a></h3>
<p><a id="Cache_Region_Settings">Cache regon properties are set by
giving your cached data a "region name" in hibernate. You can tune the
MemcachedCache instance for your region using the following properties.
These properties essentially override the cache-wide properties above. </a></p>
<table border="0">
<tbody>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> <strong>Property</strong> </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> <strong>Default</strong> </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> <strong>Description</strong> </td>
</tr>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> hibernate.memcached.[region-name].cacheTimeSeconds </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> none, see hibernate.memcached.cacheTimeSeconds </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> Set the cache time for this cache region, overriding the cache-wide setting. </td>
</tr>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> hibernate.memcached.[region-name].keyStrategy </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> none, see hibernate.memcached.keyStrategy </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;">
Overrides the strategy class to to use for generating cache keys in
this cache region. Must provide a class name that implements
KeyStrategy </td>
</tr>
<tr>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> hibernate.memcached.[region-name].clearSupported </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> none, see hibernate.memcached.clearSupported </td>
<td style="border: 1px solid #aaaaaa; padding: 5px;"> Enables clear() operations for this cache region only. Again, the clear operation incurs cost on every get/set operation. </td>
</tr>
</tbody>
</table>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/250534" style="color:red;">已有 <strong>2</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 09 Oct 2008 00:03:19 +0800</pubDate>
        <link>http://www.javaeye.com/topic/250534</link>
        <guid>http://www.javaeye.com/topic/250534</guid>
      </item>
          <item>
        <title>Spring MVC SimpleFormController 详细流程图</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://chenjianjx.javaeye.com">chenjianjx</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252140" style="color:red;">http://www.javaeye.com/topic/252140</a>&nbsp;
          发表时间: 2008年10月13日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          看了好久的代码，终于搞清楚了<br />阅读顺序：<br />&nbsp;&nbsp; 1.《请求表单_流程》<br />&nbsp;&nbsp; 2.《非Session_Form的提交》<br />&nbsp;&nbsp; 3.《Session_Form的正常提交》<br />&nbsp;&nbsp; 4.《Session Form的非正常提交》
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252140" style="color:red;">已有 <strong>1</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 13 Oct 2008 13:42:48 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252140</link>
        <guid>http://www.javaeye.com/topic/252140</guid>
      </item>
          <item>
        <title>Android入门扫盲之二</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kuikui.javaeye.com">LinuxFans</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251964" style="color:red;">http://www.javaeye.com/topic/251964</a>&nbsp;
          发表时间: 2008年10月12日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h2 style="margin: 13pt 0cm;"><span style="font-family: 宋体; mso-ascii-font-family: Cambria; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: major-fareast; mso-hansi-font-family: Cambria; mso-hansi-theme-font: major-latin;"><span style="font-size: large;">资源的引用</span></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">在</span><span lang="EN-US"><span style="font-family: Calibri;">Android</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">开发中对资源的引用是很重要的内容，看一个</span><span lang="EN-US"><span style="font-family: Calibri;">Android</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">工程结构的好与坏，其实看看工程结构的资源文件的相互关系就大概可以看出来了，个人觉得学习好</span><span lang="EN-US"><span style="font-family: Calibri;">Android</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">，资源文件是很重要的部分，这里讲的都是些入门级别的知识点，耐下心思看哦，呵呵。</span></span></p>
<p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18.75pt; text-indent: -18.75pt; mso-char-indent-count: 0; mso-list: l0 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;"><span style="font-size: small; font-family: Calibri;">1，</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp; </span></span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">三种资源文件形式。资源文件之间的相互引用自然是基础的基础，三种形式</span><span lang="EN-US"><span style="font-family: Calibri;">(android:xxx/yyy,@xxxx/yyy,?xxx)</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">的区别要彻底地弄明白。</span></span></p>
<p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18.75pt; text-indent: -18.75pt; mso-char-indent-count: 0; mso-list: l0 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;"><span style="font-size: small; font-family: Calibri;">2，</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp; </span></span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">资源文件的属性命名。资源文件属性的命名</span><span lang="EN-US"><span style="font-family: Calibri;">(</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">其实大部分是</span><span lang="EN-US"><span style="font-family: Calibri;">id</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">名字，也有其它的，这里不再累赘</span><span lang="EN-US"><span style="font-family: Calibri;">)</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">对于初学者可能不太会在意，其实是很重要的部分，它其实也就是一些我们预先定义好的变量，能不在乎吗，这些变量会在自动生成映射类</span><span lang="EN-US"><span style="font-family: Calibri;">R.java</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">中生成一些静态索引值，帮助</span><span lang="EN-US"><span style="font-family: Calibri;">Android</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">快速定位，命名说白了，也是要求我们做到望名知意</span><span lang="EN-US"><span style="font-family: Calibri;">(</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">最好包括类型</span><span lang="EN-US"><span style="font-family: Calibri;">)</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">。</span></span></p>
<p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18.75pt; text-indent: -18.75pt; mso-char-indent-count: 0; mso-list: l0 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;"><span style="font-size: small; font-family: Calibri;">3，</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp; </span></span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">每个工程都会有对应的一个</span><span lang="EN-US"><span style="font-family: Calibri;">AndroidManifest.xml</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">文件，这个文件要注意的是一些权限的表示属性，如：</span></span></p>
<p class="MsoListParagraph" align="left" style="margin: 0cm 0cm 0pt 18.75pt; text-indent: 0cm; text-align: left; mso-char-indent-count: 0; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">uses-permission </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:name</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"android.permission.INTERNET" </span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">/&gt;</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">uses-permission </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:name</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"android.permission.READ_CONTACTS" </span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">/&gt;</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">uses-permission </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:name</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"android.permission.WRITE_CONTACTS" </span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">/&gt;</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">uses-permission </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:name</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"android.permission.INSTALL_PACKAGES" </span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">/&gt;</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">uses-permission </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:name</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"android.permission.DELETE_PACKAGES" </span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">/&gt;</span></p>
<p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18.75pt; text-indent: 0cm; mso-char-indent-count: 0;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">看命名就知道是针对什么做权限限制，所以初学者要注意了，在你的程序运行的时候报</span><span lang="EN-US"><span style="font-family: Calibri;">SecurityException</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">的时候要看看你的程序是否涉及到限制操作，呵呵。这些在</span><span lang="EN-US"><span style="font-family: Calibri;">android.Manifest.permission</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">里面，大家自己看可能会更好，自己学习的能力很重要哦，要不然你做的不可能是前沿的东西啦。</span></span></p>
<p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18.75pt; text-indent: -18.75pt; mso-char-indent-count: 0; mso-list: l0 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;"><span style="font-size: small; font-family: Calibri;">4，</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp; </span></span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">自己定义类的引用。怎么定义、怎么使用，可以参考</span><span lang="EN-US"><span style="font-family: Calibri;">ApiDemo</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">里面的经典实例：</span><span lang="EN-US"><span style="font-family: Calibri;">com.example.android.apis.view.LableView.java </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">。这也是很重哦，因为在我们开发的过程中</span><span lang="EN-US"><span style="font-family: Calibri;">,Android</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">提供的</span><span lang="EN-US"><span style="font-family: Calibri;">UI</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">肯定不能满足我们的要求，这样你就得自己写新的</span><span lang="EN-US"><span style="font-family: Calibri;">UI</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">类，我在开发中就遇到很多这样的问题。如，</span><span lang="EN-US"><span style="font-family: Calibri;">Android</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">现有的</span><span lang="EN-US"><span style="font-family: Calibri;">TabHost</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">，在</span><span lang="EN-US"><span style="font-family: Calibri;">TabSpec</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">多的时候你就感觉出</span><span lang="EN-US"><span style="font-family: Calibri;">TabHost</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">英雄无用武之地啦，这样就得自己写了。</span></span></p>
<h3 style="margin: 13pt 0cm;"><span style="font-size: large;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">写自己的</span><span lang="EN-US"><span style="font-family: Calibri;">Android Components</span></span></span></h3>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">上面的第四点已经提到了一下，学会写自己的控件的重要性。在</span><span lang="EN-US"><span style="font-family: Calibri;">Android</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">里面，提供了丰富的类库，如何使用好也是值得探讨的问题。当然这里说的也是</span><span lang="EN-US"><span style="font-family: Calibri;">api</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">里面说的，这里说的主要是我在学习的过程中认为很重要的方面</span><span lang="EN-US"><span style="font-family: Calibri;">.</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">主要把界面布局类：</span><span lang="EN-US"><span style="font-family: Calibri;">LinearLayout</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">和</span><span lang="EN-US"><span style="font-family: Calibri;">FrameLayout</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">弄懂简单的开发就够了，再深入一点就要把</span><span lang="EN-US"><span style="font-family: Calibri;">ViewManager</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">及其子类弄清楚了。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">其中，</span><span lang="EN-US"><span style="font-family: Calibri;">LinearLayout</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">垂直和水平两种，他们之间可以相互嵌套，嵌套时候要注意高和宽的属性，如。</span></span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">LinearLayout </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">xmlns:android</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"http://schemas.android.com/apk/res/android"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">xmlns:app</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"http://schemas.android.com/apk/res/com.srk.study"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:id</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"@+id/screen" </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:layout_width</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"fill_parent"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:layout_height</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"fill_parent"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:background</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"@drawable/background" </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:focusable</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"true"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:orientation</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"vertical"</span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&gt;</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">LinearLayout<span style="mso-spacerun: yes;">&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:layout_width</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"fill_parent"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:layout_height</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"65dip"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:background</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"@drawable/background"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:orientation</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"horizontal"</span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&gt;</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">com.srk.study.model.TitleView </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:id</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"@+id/titleView"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 3;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:layout_width</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"280dip" </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:layout_height</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"65dip"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 3;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:paddingLeft</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"5dip" </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:paddingTop</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"10dip"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 3;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">app:focusBgColor</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">@drawable/whiteColor </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">app:titleColor</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">@drawable/blackColor</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 3;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">app:titleSize</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"15dip" </span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">/&gt;</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">com.srk.study.model.ConnectView </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:id</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"@+id/connectView"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:layout_height</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"65dip"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 3;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:layout_width</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"40dip" </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">app.startX</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"280dip" </span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">/&gt;</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">LinearLayout</span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&gt;</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #3f5fbf; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;!-- ############# Body ############ --&gt;</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">ListView </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:id</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"@+id/bodyListView" </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:layout_width</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"fill_parent"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:paddingTop</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"3dip" </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:layout_height</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"wrap_content"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:layout_weight</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"1.0"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:persistentDrawingCache</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"animation|scrolling"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:scrollbars</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"vertical" </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:focusable</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"true"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:scrollbarSize</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"12dip" </span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">/&gt;</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">LinearLayout</span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&gt;</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-size: small;">以上的配置文件是我学习过程的小练习，在这里秀一下，哈哈，记得在去年刚毕业的时候，特别爱学习，什么都想弄弄，在去年一年的时光中，每天都过得很充实，也许那就是年轻的标志吧，扯远了。今天就说这么多，有空分享点源代码出来。。。</span></span></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251964" style="color:red;">已有 <strong>1</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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>Sun, 12 Oct 2008 22:51:44 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251964</link>
        <guid>http://www.javaeye.com/topic/251964</guid>
      </item>
          <item>
        <title>用 oml4j 解释 office2007 docx 文档</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://pzzy2000.javaeye.com">pzzy2000</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251969" style="color:red;">http://www.javaeye.com/topic/251969</a>&nbsp;
          发表时间: 2008年10月12日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          这几天在 做项目的 时候，需要把一些工程文档用WEB 显示出来，本人有点懒，不想集成web 页面编辑控件。<br />就在 group.google.com，找到 http://groups.google.com/group/oxml4j 工程，用来解释 docx 文档的 ；<br /><br />&nbsp;&nbsp;&nbsp; 1 : 先 从 http://code.google.com/p/oxmlj/ 下载 需要的&nbsp; jar lib ;<br /><br />&nbsp;&nbsp;&nbsp; 2: 写了个解释TEST;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DocumentFactory oxmlPaserFactory = new ReadDocumentFactory();<br /><br />		XDocument document = oxmlPaserFactory.getXDocument(ocxFile);<br /><br />		 List&lt;Paragraph>&nbsp; paragraphs=document.getParagraph();<br />		 <br />		 for(int i=0;i&lt;paragraphs.size();i++)<br />		 {<br />			 <br />			 Paragraph paragraph=paragraphs.get(i);<br />			 <br />			 System.out.println("-- "+paragraph.getText()+" "+paragraph.getStyle()+"&nbsp;&nbsp; image : "+paragraph.getImages());<br />		 }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; 竟然 可以解析出 段落文档；<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; paragraph.getImages()； 好像 是 可以解析 出docx 文档中的图片的； <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我 用 struts2 ,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String getImages()throws Exception<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpServletResponse response = ServletActionContext.getResponse();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.wirte(paragraph.getImages());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在 页面上用&lt;img&nbsp; src="etImagesn?file="test.docx"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以显示 图片；<br /> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 竟然 成功了。。<br /> <br />&nbsp;&nbsp;&nbsp;&nbsp; 好高兴 ，这样 可以 省了 很多的代码；<br />&nbsp;&nbsp;&nbsp; 项目可以提前完成了；
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251969" style="color:red;">已有 <strong>1</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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>Sun, 12 Oct 2008 23:20:22 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251969</link>
        <guid>http://www.javaeye.com/topic/251969</guid>
      </item>
          <item>
        <title>如何Tomcat下中文乱码问题？</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zhuzhsh.javaeye.com">zhuzhsh</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251743" style="color:red;">http://www.javaeye.com/topic/251743</a>&nbsp;
          发表时间: 2008年10月12日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>现在将常见的乱码问题分为JSP页面显示中文乱码、表单提交乱码两类。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; <span style="text-decoration: underline;"><strong>1）JSP页面中显示中文乱码</strong></span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在JSP文件中使用page命令指定响应结果的MIME类型，如&lt;%@ page language="java" contentType="text/html;charset=gb2312" %&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; <strong><span style="text-decoration: underline;">2）表单提交乱码</span></strong>&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 表单提交时（post和Get方法），使用request.getParameter方法得到乱码，这是因为tomcat处理提交的参数时默认的是iso-8859-1，表单提交get和post处理乱码问题不同，下面分别说明。<br />&nbsp;&nbsp;&nbsp; (1)POST处理<br />&nbsp;&nbsp; &nbsp;对post提交的表单通过编写一个过滤器的方法来解决，过滤器在用户提交的数据被处理之前被调用，可以在这里改变参数的编码方式，过滤器的代码如下：</p>
<pre name="code" class="java">package example.util;
    
    import java.io.IOException;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    public class SetCharacterEncodingFilter implements Filter {
    
       protected String encoding = null;
    
       protected FilterConfig filterConfig = null;
    
       protected boolean ignore = true;
    
  
     public void destroy() {
    
      this.encoding = null;
      this.filterConfig = null