??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美日韩在线免费观看,青草在线视频在线观看,日韩av高清在线观看http://www.aygfsteel.com/welkinhu/category/16995.htmlWrite what I likezh-cnWed, 19 Mar 2008 08:17:43 GMTWed, 19 Mar 2008 08:17:43 GMT60Maven 2 Mirror的陷?/title><link>http://www.aygfsteel.com/welkinhu/archive/2008/03/19/187255.html</link><dc:creator>Welkin Hu</dc:creator><author>Welkin Hu</author><pubDate>Wed, 19 Mar 2008 07:03:00 GMT</pubDate><guid>http://www.aygfsteel.com/welkinhu/archive/2008/03/19/187255.html</guid><wfw:comment>http://www.aygfsteel.com/welkinhu/comments/187255.html</wfw:comment><comments>http://www.aygfsteel.com/welkinhu/archive/2008/03/19/187255.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/welkinhu/comments/commentRss/187255.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/welkinhu/services/trackbacks/187255.html</trackback:ping><description><![CDATA[<p> </p> <p>Maven 2的安装和使用虽然不是一点即用,但也不是很复杂。然而,q两天我新装MavenQ刚刚过了mvn -versionQ尝试create maven project出问题了。问题详情如下?/p> <blockquote> <p>D:\mavenSample>mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app <br /> [INFO] Scanning for projects...<br /> [INFO] Searching repository for plugin with prefix: 'archetype'.<br /> [INFO] org.apache.maven.plugins: checking for updates from central<br /> [INFO] org.codehaus.mojo: checking for updates from central<br /> [INFO] artifact org.apache.maven.plugins:maven-archetype-plugin: checking for updates from central<br /> [INFO] ------------------------------------------------------------------------<br /> [ERROR] BUILD ERROR<br /> [INFO] ------------------------------------------------------------------------<br /> [INFO] The plugin 'org.apache.maven.plugins:maven-archetype-plugin' does not exist or no valid version could be found<br /> [INFO] ------------------------------------------------------------------------<br /> [INFO] For more information, run Maven with the -e switch<br /> [INFO] ------------------------------------------------------------------------<br /> [INFO] Total time: 3 seconds<br /> [INFO] Finished at: Wed Mar 19 14:26:49 CST 2008<br /> [INFO] Final Memory: 1M/2M<br /> [INFO] ------------------------------------------------------------------------</p> </blockquote> <p> </p> <p>开始以为是internet 代理讄有问题。网上也有帖子这么说。可是换到ADSL后,不用代理了,问题仍然存在?/p> <p>几经周折后发玎ͼ原因在于我画蛇添_加了几个镜像Q其中有的镜像没有同步更新maven库。经q测试,如下maven 镜像工作正常Q?/p> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->    <mirror><br />       <id>ibiblio.org</id><br />       <name>ibiblio Mirror of <a >http://repo1.maven.org/maven2/</a></name><br />       <url><a >http://mirrors.ibiblio.org/pub/mirrors/maven2</a></url><br />       <mirrorOf>central</mirrorOf><br />       <!-- United States, North Carolina --><br />     </mirror><br />     <mirror><br />       <id>redv.com</id><br />       <url><a >http://mirrors.redv.com/maven2</a></url><br />       <mirrorOf>central</mirrorOf><br />       <!-- Shanghai, China , Very fast--><br />     </mirror><br />      <mirror><br />       <id>dotsrc.org</id><br />       <url><a >http://mirrors.dotsrc.org/maven2</a></url><br />       <mirrorOf>central</mirrorOf><br />       <!-- Denmark --><br />     </mirror><br />     <mirror><br />       <id>sunsite.dk</id><br />       <url><a >http://mirrors.sunsite.dk/maven2</a></url><br />       <mirrorOf>central</mirrorOf><br />       <!-- Denmark --><br />     </mirror><br />     <mirror><br />       <id>skynet.be</id><br />       <url><a >http://maven2.mirrors.skynet.be/pub/maven2</a></url><br />       <mirrorOf>central</mirrorOf><br />       <!-- Belgium --><br />     </mirror><br />     <mirror><br />       <id>cica.es</id><br />       <url><a >http://ftp.cica.es/mirrors/maven2</a></url><br />       <mirrorOf>central</mirrorOf><br />       <!-- Spain, Sevilla --><br />     </mirror><br />     <!-- these just point to ibiblio.org --><br />     <mirror><br />       <id>ibiblio.net</id><br />       <name>ibiblio.net Mirror of <a >http://repo1.maven.org/maven2/</a></name><br />       <url><a >http://www.ibiblio.net/pub/packages/maven2</a></url><br />       <mirrorOf>central</mirrorOf><br />       <!-- United States, North Carolina  Fast--><br />     </mirror></div> <p><br /> </p> <p> </p> <p>而下面的Maven镜像都有问题?/p> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #0000ff;"><</span><span style="color: #800000;">mirror</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />       </span><span style="color: #0000ff;"><</span><span style="color: #800000;">id</span><span style="color: #0000ff;">></span><span style="color: #000000;">planetmirror</span><span style="color: #0000ff;"></</span><span style="color: #800000;">id</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />       </span><span style="color: #0000ff;"><</span><span style="color: #800000;">name</span><span style="color: #0000ff;">></span><span style="color: #000000;">Australian Mirror of http://repo1.maven.org/maven2/</span><span style="color: #0000ff;"></</span><span style="color: #800000;">name</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />       </span><span style="color: #0000ff;"><</span><span style="color: #800000;">url</span><span style="color: #0000ff;">></span><span style="color: #000000;">http://public.planetmirror.com/maven2/</span><span style="color: #0000ff;"></</span><span style="color: #800000;">url</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />       </span><span style="color: #0000ff;"><</span><span style="color: #800000;">mirrorOf</span><span style="color: #0000ff;">></span><span style="color: #000000;">central</span><span style="color: #0000ff;"></</span><span style="color: #800000;">mirrorOf</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />     </span><span style="color: #0000ff;"></</span><span style="color: #800000;">mirror</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />     </span><span style="color: #0000ff;"><</span><span style="color: #800000;">mirror</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />       </span><span style="color: #0000ff;"><</span><span style="color: #800000;">id</span><span style="color: #0000ff;">></span><span style="color: #000000;">lsu.edu</span><span style="color: #0000ff;"></</span><span style="color: #800000;">id</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />       </span><span style="color: #0000ff;"><</span><span style="color: #800000;">url</span><span style="color: #0000ff;">></span><span style="color: #000000;">http://ibiblio.lsu.edu/main/pub/packages/maven2</span><span style="color: #0000ff;"></</span><span style="color: #800000;">url</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />       </span><span style="color: #0000ff;"><</span><span style="color: #800000;">mirrorOf</span><span style="color: #0000ff;">></span><span style="color: #000000;">central</span><span style="color: #0000ff;"></</span><span style="color: #800000;">mirrorOf</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />       </span><span style="color: #008000;"><!--</span><span style="color: #008000;"> United States, Louisiana </span><span style="color: #008000;">--></span><span style="color: #000000;"><br />      </span><span style="color: #0000ff;"></</span><span style="color: #800000;">mirror</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br /> <br />     </span><span style="color: #0000ff;"><</span><span style="color: #800000;">mirror</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />       </span><span style="color: #0000ff;"><</span><span style="color: #800000;">id</span><span style="color: #0000ff;">></span><span style="color: #000000;">sateh.com</span><span style="color: #0000ff;"></</span><span style="color: #800000;">id</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />       </span><span style="color: #0000ff;"><</span><span style="color: #800000;">url</span><span style="color: #0000ff;">></span><span style="color: #000000;">http://maven.sateh.com/repository</span><span style="color: #0000ff;"></</span><span style="color: #800000;">url</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />       </span><span style="color: #0000ff;"><</span><span style="color: #800000;">mirrorOf</span><span style="color: #0000ff;">></span><span style="color: #000000;">central</span><span style="color: #0000ff;"></</span><span style="color: #800000;">mirrorOf</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />       </span><span style="color: #008000;"><!--</span><span style="color: #008000;"> The Netherlands, Amsterdam </span><span style="color: #008000;">--></span><span style="color: #000000;"><br />     </span><span style="color: #0000ff;"></</span><span style="color: #800000;">mirror</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />     </span><span style="color: #0000ff;"><</span><span style="color: #800000;">mirror</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />       </span><span style="color: #0000ff;"><</span><span style="color: #800000;">id</span><span style="color: #0000ff;">></span><span style="color: #000000;">ggi-project.org</span><span style="color: #0000ff;"></</span><span style="color: #800000;">id</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />       </span><span style="color: #0000ff;"><</span><span style="color: #800000;">url</span><span style="color: #0000ff;">></span><span style="color: #000000;">http://ftp.ggi-project.org/pub/packages/maven2</span><span style="color: #0000ff;"></</span><span style="color: #800000;">url</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />       </span><span style="color: #0000ff;"><</span><span style="color: #800000;">mirrorOf</span><span style="color: #0000ff;">></span><span style="color: #000000;">central</span><span style="color: #0000ff;"></</span><span style="color: #800000;">mirrorOf</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br />       </span><span style="color: #008000;"><!--</span><span style="color: #008000;"> The Netherlands, Amsterdam </span><span style="color: #008000;">--></span><span style="color: #000000;"><br />     </span><span style="color: #0000ff;"></</span><span style="color: #800000;">mirror</span><span style="color: #0000ff;">></span></div> <img src ="http://www.aygfsteel.com/welkinhu/aggbug/187255.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/welkinhu/" target="_blank">Welkin Hu</a> 2008-03-19 15:03 <a href="http://www.aygfsteel.com/welkinhu/archive/2008/03/19/187255.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开源项目托站点SourceForge, Google Code, CodePlexhttp://www.aygfsteel.com/welkinhu/archive/2008/02/27/182406.htmlWelkin HuWelkin HuWed, 27 Feb 2008 02:20:00 GMThttp://www.aygfsteel.com/welkinhu/archive/2008/02/27/182406.htmlhttp://www.aygfsteel.com/welkinhu/comments/182406.htmlhttp://www.aygfsteel.com/welkinhu/archive/2008/02/27/182406.html#Feedback0http://www.aygfsteel.com/welkinhu/comments/commentRss/182406.htmlhttp://www.aygfsteel.com/welkinhu/services/trackbacks/182406.htmlq来Ҏ(gu)公司要求Q学?fn)Microsoft.Net。于是仿照EyeLoveUQ写了一个C#的小E序。现在比较稳定了Q就x到在SoruceForgeq样的网站上ȝ一U?br />
最开始考虑的自然是SourceForge。但在公叔R要通过Proxy讉Ksourceforge.netӞ速度奇慢?br />
W二个考虑的是Google Code。无论在安过ADSL讉KQ还是在公司通过Proxy讉KQ速度都可以接受。最好用的是支持对Issue, Discussion, Document{自定义属性标{,如priority, type, milestone{?br />
无论是SourceForgeQ还是Google CodeQ与subversion和eclipse的集成都非常好。可是我用的是Microsoft Visual Studio 2008和C#Q与q两个东安不合拍:(x)

  •  Subversion 与VS2008的集成需要购买Visual SVN
  • VS2008不能发布下蝲包到SourceForge和Google Code上?/li>

最后我发现CodePlexq个|站Q居然提供Visual Studio Team Fundation Server的服务。与我用的VS2008完全是一Ӟ可惜的是它的|速非怸E_Q很难访问。估计服务器只在国。最要命的是Q在公司的Proxy环境下,我可以从IE讉KCodePlex的VSTS服务器,但VS2008的Team Explorer怎么也访问不了?/p>

Welkin Hu 2008-02-27 10:20 发表评论
]]>
Hiberante Collection Mapping Sampleshttp://www.aygfsteel.com/welkinhu/archive/2007/10/24/155524.htmlWelkin HuWelkin HuWed, 24 Oct 2007 03:09:00 GMThttp://www.aygfsteel.com/welkinhu/archive/2007/10/24/155524.htmlhttp://www.aygfsteel.com/welkinhu/comments/155524.htmlhttp://www.aygfsteel.com/welkinhu/archive/2007/10/24/155524.html#Feedback0http://www.aygfsteel.com/welkinhu/comments/commentRss/155524.htmlhttp://www.aygfsteel.com/welkinhu/services/trackbacks/155524.htmlCollection mapping table
HBM Element Java Interface Java Implementation
<set> Set HashSet
<set> with order SortedSet TreeSet
<list> List ArrayList
<bag>, <idbag> Collection ArrayList
<map> Map HashMap
<map> with order SortedMap TreeMap
<array>, <primitive-array> N/A array

 

Sample Tables

CREATE TABLE `core_sample_company` (
  `companyId` decimal(18,0) NOT NULL,
  `companyName` varchar(128) NOT NULL,
  `description` varchar(1024) default NULL,
  PRIMARY KEY  (`companyId`)
);

CREATE TABLE `core_sample_role` (
  `roleId` decimal(18,0) NOT NULL,
  `roleName` varchar(128) NOT NULL,
  `companyId` decimal(18,0) NOT NULL,
  `description` varchar(1024) default NULL,
  PRIMARY KEY  (`roleId`)
);

CREATE TABLE `core_sample_user` (
  `userId` decimal(18,0) NOT NULL,
  `userName` varchar(128) NOT NULL,
  `companyId` decimal(18,0) NOT NULL,
  `defaultRoleId` decimal(18,0) default NULL,
  `description` varchar(1024) default NULL,
  PRIMARY KEY  (`userId`)
);

CREATE TABLE `core_sample_user_role` (
  `userId` decimal(18,0) NOT NULL,
  `roleId` decimal(18,0) NOT NULL,
  `pripority` int(11) NOT NULL,
  PRIMARY KEY  (`userId`,`roleId`)
);

HBM defintion

The definiton of <set>, <bag>, <list> is similar.

Defines a collection whose element type is simple data type.

<class name="SampleCompany" table="core_sample_company">

        <bag name="roleNames" table="core_sample_role" lazy="false" >
            <key column="companyId"/>
            <element column="roleName" type="string"/>
        </bag>

</class>

Query HQL: select c.id, c.name, r from SampleCompany c left join c.roleNames r

Defines a collection whose element type is another mapped java class

<class name="SampleCompany" table="core_sample_company">   

   <bag name="roles" cascade="none">
            <key column="companyId"/>
            <one-to-many class="SampleRole" not-found="ignore"/>
        </bag>

</class>

Query HQL: select c.id, c.name, r.name from SampleCompany c left join c.role r

Pay attention that key column is a foreign column of SampleRole table.

Defines a list with list-index

<list> is not a popular element. It request a index column in table. The index column is the index of java List, it has to be a sequence starts from 0.

<class name="SampleUser" table="core_sample_user">

     <list name="roles" table="core_sample_user_role" cascade="all" lazy="false" >
            <key><column name="userId" sql-type="integer"/></key>
            <index column="priority"></index>
            <many-to-many class="SampleRole">
                <column name="roleId"></column>
            </many-to-many>
        </list>

</class>

The benifit of <list> is it alwasy sorts list by index column. However, It is hard to resort the list. I tried remove a role from role list and add it to another poisition. When save the role list, an exception throwed:

java.sql.BatchUpdateException: Duplicate entry 'user001-role003 for key 1

This should be a hibernate bug.

Defines a bag with relationship table

<class name="SampleRole" table="core_sample_role">

      <bag name="users" table="core_sample_user_role" cascade="none" lazy="false">
            <key><column name="roleId" sql-type="integer"/></key>
            <many-to-many class="SampleUser">
                <column name="userId"></column>
            </many-to-many>
        </bag>

</class>

  • Key column is foreign column from relationship table to current table(SampleRole>
  • many-to-many sub column is foreign column from relationship table to target table (SampleUser)


Welkin Hu 2007-10-24 11:09 发表评论
]]>
Eclipse 3.3下Sysdeo3.2.1配置的几个问?/title><link>http://www.aygfsteel.com/welkinhu/archive/2007/07/03/127927.html</link><dc:creator>Welkin Hu</dc:creator><author>Welkin Hu</author><pubDate>Tue, 03 Jul 2007 10:06:00 GMT</pubDate><guid>http://www.aygfsteel.com/welkinhu/archive/2007/07/03/127927.html</guid><wfw:comment>http://www.aygfsteel.com/welkinhu/comments/127927.html</wfw:comment><comments>http://www.aygfsteel.com/welkinhu/archive/2007/07/03/127927.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/welkinhu/comments/commentRss/127927.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/welkinhu/services/trackbacks/127927.html</trackback:ping><description><![CDATA[<p>Sysdeo是知名的Tomcat插g。今天在构徏eclipse 3.3 + sysdeo3.2.1 + tomcat 6.0.13Ӟ发现如下几个注意炏V?/p> <ol> <li>Sysdeo主配|项中Tomcat Home是配|Tomcat目录的,注意最后不要加“\”。比如F:\java\tomcat-6.0.13是对了,F:\java\tomcat-6.0.13\׃对了? <li>Sysdeo advance配置中的Tomcat Base指的是配|Tomcatq行时的基准目录。实际上q个配置Ҏ(gu)多余的,可以不配Q也不应当配。它必须和Sysdeo主配|项中Tomcat Home一_(d)否则?x)有一些Tomcatpȝ文g找不到? <li>如果不通过eclipse和SysdeoQ直接运行Tomcat的startup.batQ基准目录是%TOMCAT_HOME%/webapps。而sysdeo讑֮的基准目录是%TOMCAT_HOME%。这个会(x)D一些冲H。比如放?TOMCAT_HOME%/logs/中的log文g的位|,直接q行要写成?./logs/app.log”,q行sysdeo时要写成“logs/app.log?/li></ol><img src ="http://www.aygfsteel.com/welkinhu/aggbug/127927.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/welkinhu/" target="_blank">Welkin Hu</a> 2007-07-03 18:06 <a href="http://www.aygfsteel.com/welkinhu/archive/2007/07/03/127927.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>泛型使用结http://www.aygfsteel.com/welkinhu/archive/2007/06/20/125241.htmlWelkin HuWelkin HuWed, 20 Jun 2007 01:37:00 GMThttp://www.aygfsteel.com/welkinhu/archive/2007/06/20/125241.htmlhttp://www.aygfsteel.com/welkinhu/comments/125241.htmlhttp://www.aygfsteel.com/welkinhu/archive/2007/06/20/125241.html#Feedback0http://www.aygfsteel.com/welkinhu/comments/commentRss/125241.htmlhttp://www.aygfsteel.com/welkinhu/services/trackbacks/125241.html1、不得在类中用通配W,例如

public class PojoModelTree extends IdentifiableTree<? extends PojoModel>

错误信息如下Q?/p>

The type PojoModelTree cannot extend or implement IdentifiableTree<? extends PojoModel>. A
supertype may not specify any wildcard

 

2、只?lt;? super Type>Q没?lt;E super Type>

正确用法QTreeNode<? super Node> getTree()

错误用法 <E super Node> E getParent();

 

3、函数返回值类型不应用通配W:(x)

错误用法QTreeNode<? extends T> getChildNode(String pKey)

q种用法本n无错Q但在赋q回值给其它变量时会(x)报类型不匚w?/p>

正确用法Q?lt;N extends T> TreeNode<N> getChildNode(String pKey)

 

4、带通配W的泛型集合不能使用addҎ(gu)。不带通配W的泛型集合也可接收子类元素?/p>

错误用法Q?/p>

List<? extends Number> list1 = new ArrayList<Number>();
list1.add(new Integer(11)); // cd不匹配?

W二行报错ؓ(f)Q?

The method add(capture#1-of ? extends Number) in the type List<capture#1-of ? extends
Number> is not applicable for the arguments (Integer)

 

正确用法Q?

List<Number> list1 = new ArrayList<Number>();
list1.add(new Integer(11));

 

昄Q在泛型的检查之下,仍可向集合中d指定泛型的子cd素。以下代码也是合法的Q?

List<Number> list1 = new ArrayList<Number>();
list1.add(new Integer(11));
List<Integer> list2 = new ArrayList<Integer>();
list2.add(33);
list2.add(44);
list1.addAll(list2);

但是Q如果写list1=list2׃合法了?

Welkin Hu 2007-06-20 09:37 发表评论
]]>
Spring中如何获取和重置一个BeanFactory对象Q或者说Q如何动态修改Hibernate Configuration?http://www.aygfsteel.com/welkinhu/archive/2007/06/11/123434.htmlWelkin HuWelkin HuMon, 11 Jun 2007 09:46:00 GMThttp://www.aygfsteel.com/welkinhu/archive/2007/06/11/123434.htmlhttp://www.aygfsteel.com/welkinhu/comments/123434.htmlhttp://www.aygfsteel.com/welkinhu/archive/2007/06/11/123434.html#Feedback4http://www.aygfsteel.com/welkinhu/comments/commentRss/123434.htmlhttp://www.aygfsteel.com/welkinhu/services/trackbacks/123434.htmlSpring对Hibernate Session Factory提供了高度封装。如下例所C?/p>

 

<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="myDataSource"/>
<property name="mappingResources">
<list>
<value>product.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.HSQLDialect
</value>
</property>
</bean>

 

然而,在我的案例中Q因Z务需要,我们必须在运行时加入新的HBM。在单独使用Hibernate的时Q只要取到Hiberante Configuration对象Q修改一下配|,然后rebuild session factory可以了?

可是lSpringq一装Q我只能取到一个只ȝSessionFactory对象Q无法进行重|?

q里有两U可能方法,但我都不知道如何做?

1Q取到LocalSessionFactoryBean对象q行重置?

2Q取到Hibernate Configuration对象q行重置?



Welkin Hu 2007-06-11 17:46 发表评论
]]>
Spring断想Q接口粘?/title><link>http://www.aygfsteel.com/welkinhu/archive/2007/05/11/116668.html</link><dc:creator>Welkin Hu</dc:creator><author>Welkin Hu</author><pubDate>Fri, 11 May 2007 02:00:00 GMT</pubDate><guid>http://www.aygfsteel.com/welkinhu/archive/2007/05/11/116668.html</guid><wfw:comment>http://www.aygfsteel.com/welkinhu/comments/116668.html</wfw:comment><comments>http://www.aygfsteel.com/welkinhu/archive/2007/05/11/116668.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.aygfsteel.com/welkinhu/comments/commentRss/116668.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/welkinhu/services/trackbacks/116668.html</trackback:ping><description><![CDATA[<p>Spring和AOP像一个强力的_合剂,完全独立开发的lgQ或说是模块Q下同)_合成一个有机的Q完整的Q可扩展的系l。正是有了这个粘合剂的帮助,才实C比较d的独立组件开发?/p> <p>说它是“比较彻底”,是因为它极大的减了lg之间的依赖。在你开发一个组件时Q基本上不会(x)因ؓ(f)其它lg没有开发完成,或出现Bug而媄响到你的q度?/p> <p>但是Q它q没有完全消除开发时lg之间的依赖,你仍然得依赖于其它组件提供的API接口。ؓ(f)此,我们不得不把一个组件拆成两个jar包:(x)一个component-api.jarQ一个component-impl.jar。由于api包内全是公用接口和Value ObjectQ所以它相对E_Q可以早早的提供出来。这P一个组件如果要使用另一个组件的服务Q在开发阶D,只须依赖于api包即可。运行时QSpring再根据服务提供组件的配置信息扑ֈ正确的实现类?/p> <p> </p> <p>昨天Q我们在一个讨Z(x)上发C一个有的问题Q?/p> <p>lgUIA是一个UIlgQ它要求提供一些数据,于时它把自己的要求写时接口ProviderA中。组件C1和C2是两个不同的业务lgQ它们的UI中都有用UIAq个lgQ而它们都提供了自q数据接口ServiceC1和ServiceC2?/p> <p>ProviderA所要求的方法,在ServiceC1和ServiceC2中都有提供。这个时候怎么做才能各个lg完独立呢?/p> <p>一、让ServiceC1和ServiceC2l承于ProviderA。但是这样将D业务lg依赖于UIlg。有谁知道一共有多少个UIlg需要依赖啊Q而且U(ku)Ilg是最易变的?/p> <p>二、把ProviderA从uia.jar抽出来,攑ֈ单独的uia-api.jar中。这个就未免题大做了。一个系l少说也有几十个UIlgQ难道要生成上百个jar包不成?</p> <p>三、把所有的UI的要求的API都抽出来Q放C个ui-api.jar中。这样jar包是了Q可是单个的UIlg失ȝ立性了?/p> <p>上面三个Ҏ(gu)Q不怎么理UIlg的接口,都没有解决业务组件依赖于不定数目的UIlgq个问题?/p> <p> </p> <p>最后,我们采用的方法是Q把UIlg视ؓ(f)某个业务lg的子lgQUIlg自己不定义接口。所有对外的接口和对UI的接口,都放在业务组件的api包中?/p> <p>q样做,业务lg和UIlg都依赖于api包,互相之间没有依赖。当Ӟq样做,UIlg׃能游M大的业务lg之外。而我们采用这个方案的原因也在于,我们认定为多个组件提供服务的UIlg是很的?/p> <p> </p> <p>昄我们采用的方法只是就事论事的一个折h案。ƈ没有解决服务提供者和消费者之间的交叉依赖?/p> <p>要解册U交叉依赖,我的思\是再提供一个接口之间的_合机制。消费者定义自p求的服务接口Q提供者定义自己提供的服务接口。最后用一个配|文Ӟ二者粘合v来?/p> <p>目前QSpringq没有提供这U功能?/p><img src ="http://www.aygfsteel.com/welkinhu/aggbug/116668.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/welkinhu/" target="_blank">Welkin Hu</a> 2007-05-11 10:00 <a href="http://www.aygfsteel.com/welkinhu/archive/2007/05/11/116668.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>l于明白了AOP中的斚w是什么意?/title><link>http://www.aygfsteel.com/welkinhu/archive/2007/04/24/113138.html</link><dc:creator>Welkin Hu</dc:creator><author>Welkin Hu</author><pubDate>Tue, 24 Apr 2007 04:07:00 GMT</pubDate><guid>http://www.aygfsteel.com/welkinhu/archive/2007/04/24/113138.html</guid><wfw:comment>http://www.aygfsteel.com/welkinhu/comments/113138.html</wfw:comment><comments>http://www.aygfsteel.com/welkinhu/archive/2007/04/24/113138.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/welkinhu/comments/commentRss/113138.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/welkinhu/services/trackbacks/113138.html</trackback:ping><description><![CDATA[<p>AOP的概念已l热了很久了Q我一直不太关注,也不太理解这个面向方面编E中的方面是什么意思。由于AOP和OOP仅一字之差,所以在|上看到大量的文章来拿这两个作对比,看完后还是稀里糊涂的?/p> <p> </p> <p>q段旉开始拿Spring做新产品Q于是开始仔l研IAOP。这才发现AOP和OOP讲的Ҏ(gu)不是同一cȝ东西。 </p> <p>AOP中的斚w是指问题的一个方面,相对于问题的全部来说的。AOP是针对问题的一个方面编E。它把一个问题(或者说是需求)从程序别上拆分成几个方面,让程序员在编E时只关注自己应当关注的斚wQ而完全忽略其它的斚w。最后由AOP框架来组合不同程序员Q或者说是不同模块)的程序?/p>   <p>从这点上来说QAOP的确Ҏ(gu)块化开发有很大的裨益?/p> <br> <p><br></p> AOP的好处,主要有两炏V?br>一、完全消除了~码时模块之间的依赖Q解决了团队开发中一龙拦住千江水的瓶颈问题。当Ӟ做到q一炚w了AOP外,q必d到面向接口编E?br>二、可以在L阶段Q向已有功能模块中填加新功能Q且不R入原有功能?br> <img src ="http://www.aygfsteel.com/welkinhu/aggbug/113138.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/welkinhu/" target="_blank">Welkin Hu</a> 2007-04-24 12:07 <a href="http://www.aygfsteel.com/welkinhu/archive/2007/04/24/113138.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用Myeclipse的理?/title><link>http://www.aygfsteel.com/welkinhu/archive/2007/04/18/111509.html</link><dc:creator>Welkin Hu</dc:creator><author>Welkin Hu</author><pubDate>Wed, 18 Apr 2007 02:05:00 GMT</pubDate><guid>http://www.aygfsteel.com/welkinhu/archive/2007/04/18/111509.html</guid><wfw:comment>http://www.aygfsteel.com/welkinhu/comments/111509.html</wfw:comment><comments>http://www.aygfsteel.com/welkinhu/archive/2007/04/18/111509.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.aygfsteel.com/welkinhu/comments/commentRss/111509.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/welkinhu/services/trackbacks/111509.html</trackback:ping><description><![CDATA[<p>Myeclipse无疑是最优秀的Java开发^C一。它以年Ҏ(gu)式销售,标准?1.75元Q专业版52.95元。对老美来说实在是太便宜了。但换成人民币可׃菌Ӏ?/p> <p>q里列几个Myelipse做得好与不好的地方,供大家参考。以下ؓ(f)个h体验Q不代表官方意见:)</p> <p>用Myeclipse的理由:(x)</p> <ol> <li>可视化的HTML/JSP/JSF~辑器?/li> <li>JSP, Javascripte调试功能</li> <li>良好的XML~辑器?/li> <li>良好的Hibernate集成?/li> </ol> <p>在以上几个方面,Bea workshop都有相关功能Q而且界面做得非常好。可惜一来h(hun)钱太贵,二来在我的机子上出现茂名其妙的bugQ所以就攑ּ了?/p> <p>Myeclipse使用Hibernate Tools集成了很多功能,除了HQL~辑器的集成我不满意外,其它的都不错?/p> <p>XML~辑器,个h一直很U闷Z么eclipse本n不提供一个这L(fng)插gQ居然缺省用普通文本编辑器~辑XML。其它开源的XML插g都差Zh意,收费倒是有一些。但仅ؓ(f)XMLC个插Ӟ有点冤。Myeclipse的刚刚够用,好!</p> <p>开源的插g中,没有可视化的HTML/JSP/JSF~辑器。想要这个功能,只能选Myeclipse或Bea workshop了?/p> <p>再说说Myelipse做得不好的地斏V?/p> <ol> <li>UML功能Q可用性很不好Q没有MDAQ一些开源Y仉做得比它好?/li> <li>目_度q细Q做一个earQ至要做三个项目:(x)ear, warQejb?/li> <li>囄~辑Q这是个鸡肋功能?/li> <li>对eclipse, hibernate, spring{开源Y件的新版本支持不?qing)时?/li> </ol> <p>UML和图片编辑是Myelipse专业本才有的功能。如此看来,用标准版p够满x的需要。但是标准版中没有Java script 调试功能Q这个确实不爽?/p> <p>最后说说Netbeans. Netbeans 6中提供了UML功能Q虽然易用性上不及(qing)Rose和PowerdesignerQ但是比一般的开源UML工具好用。如果它再提供可视化的HTML/JSP开发,我就转向Netbeans了。说来也奇怪,Netbeans支持可视化的JSF开发,却不支持可视化的HTML/JSP开发?/p> <br> <p><br></p> <p>2007-4-27: q两天受到UML功能的吸引,再次试了一下Netbeans5.5?.0M8?.0M8q很不稳定,l常有些错误框蟩出来。两个版本都通过mavenide2q个插g支持maven。但是支持的很不好。所有的maven目都不能单独debug一个java classQ全部要求在Junit下运行。看来还不是用netbeans的时候?/p><img src ="http://www.aygfsteel.com/welkinhu/aggbug/111509.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/welkinhu/" target="_blank">Welkin Hu</a> 2007-04-18 10:05 <a href="http://www.aygfsteel.com/welkinhu/archive/2007/04/18/111509.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实测昄Hibernate的batch_size配置没有作用http://www.aygfsteel.com/welkinhu/archive/2007/03/27/106612.htmlWelkin HuWelkin HuTue, 27 Mar 2007 02:43:00 GMThttp://www.aygfsteel.com/welkinhu/archive/2007/03/27/106612.htmlhttp://www.aygfsteel.com/welkinhu/comments/106612.htmlhttp://www.aygfsteel.com/welkinhu/archive/2007/03/27/106612.html#Feedback5http://www.aygfsteel.com/welkinhu/comments/commentRss/106612.htmlhttp://www.aygfsteel.com/welkinhu/services/trackbacks/106612.html阅读全文

Welkin Hu 2007-03-27 10:43 发表评论
]]>
JBoss上的J2EE数据源配|?/title><link>http://www.aygfsteel.com/welkinhu/archive/2007/03/07/102319.html</link><dc:creator>Welkin Hu</dc:creator><author>Welkin Hu</author><pubDate>Wed, 07 Mar 2007 01:51:00 GMT</pubDate><guid>http://www.aygfsteel.com/welkinhu/archive/2007/03/07/102319.html</guid><wfw:comment>http://www.aygfsteel.com/welkinhu/comments/102319.html</wfw:comment><comments>http://www.aygfsteel.com/welkinhu/archive/2007/03/07/102319.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/welkinhu/comments/commentRss/102319.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/welkinhu/services/trackbacks/102319.html</trackback:ping><description><![CDATA[<p> </p> <h3>ejb-jar.xml in ejb/META-INF </h3> <p> </p> <p><session ><br>... ...</p> <blockquote> <p><resource-ref><br><res-ref-name>XPCDataSource</res-ref-name><br><res-type>javax.sql.DataSource</res-type><br><res-auth>Application</res-auth><br><res-sharing-scope>Shareable</res-sharing-scope><br></resource-ref> </p></blockquote> <p></session> <p>  <h3>jboss.xml in ejb/META-INF</h3> <p>  <p><?xml version="1.0"?><br><!DOCTYPE jboss PUBLIC<br>"-//JBoss//DTD JBOSS 3.0//EN"<br>"<a </a>> <p><jboss><br><enterprise-beans><br><session><br><ejb-name>CacheDemo1</ejb-name><br><jndi-name>ejb/CacheDemo1</jndi-name><br><local-jndi-name>ejb/CacheDemo1Local</local-jndi-name><br><resource-ref><br><res-ref-name>XPCDataSource</res-ref-name><br><jndi-name>java:/XPCDataSource</jndi-name><br></resource-ref><br></session> <br></enterprise-beans><br></jboss> <p>  <h3>web.xml  in web/WEB-INF</h3> <p><resource-ref><br><res-ref-name>XPCDataSource</res-ref-name><br><res-type>javax.sql.DataSource</res-type><br><res-auth>Application</res-auth><br><res-sharing-scope>Shareable</res-sharing-scope><br></resource-ref> <p>  <h3>jboss-web.xml in web/WEB-INF</h3> <p><resource-ref><br><res-ref-name>XPCDataSource</res-ref-name><br><jndi-name>java:/XPCDataSource</jndi-name><br></resource-ref> <p>  <h3>创徏Data Source </h3> <p>Context c = new InitialContext();<br>Object obj = c.lookup("java:comp/env/XPCDataSource");<br>DataSource ds = (DataSource)narrow(obj, DataSource.class); <br>connection = ds.getConnection();</p> <p> </p> <h3>取得Transaction</h3> <p>//context is javax.ejb.SessionContext</p> <p>//Transaction should be getten from EJB</p> <p>UserTransaction tx = context.getUserTransaction();</p> <p> </p> <p>Webspere deployer will change ejb-jar.xml. Never put struts to Webspere/lib/ext</p><img src ="http://www.aygfsteel.com/welkinhu/aggbug/102319.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/welkinhu/" target="_blank">Welkin Hu</a> 2007-03-07 09:51 <a href="http://www.aygfsteel.com/welkinhu/archive/2007/03/07/102319.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Myeclipse J2EE Project, 折腾L了?/title><link>http://www.aygfsteel.com/welkinhu/archive/2007/02/16/100062.html</link><dc:creator>Welkin Hu</dc:creator><author>Welkin Hu</author><pubDate>Fri, 16 Feb 2007 08:15:00 GMT</pubDate><guid>http://www.aygfsteel.com/welkinhu/archive/2007/02/16/100062.html</guid><wfw:comment>http://www.aygfsteel.com/welkinhu/comments/100062.html</wfw:comment><comments>http://www.aygfsteel.com/welkinhu/archive/2007/02/16/100062.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/welkinhu/comments/commentRss/100062.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/welkinhu/services/trackbacks/100062.html</trackback:ping><description><![CDATA[ <p>q两天因为想试一下群集CacheQ用Myeclipse Z一个测试程序,快把我折腾死了?/p> <p>在Myeclipse的设计中QProject的粒度很l。EAR Project, WAR Project, 和EJB Project是三个不同的Project。它不支持EAR Project包打天下不太一栗?/p> <p>我按照这个要求,创徏了四个项目:(x)EAR, WAR, EJB和一个公用的Pojo Project?/p> <p>公司刚刚换用了SubVersion首先涮了我一把。Subeclipse 1.0.1只认一个项目一个项目的check out。一下子把我的四个项目合q成一个什么都不是的大目。 我只好把q个大项目关掉,再一个一个的导入q来?/p> <p>可是在新徏Subversion库的当口上,目的服务器路径变动了好几次。每ơ都要我q么弄几下。迫不得Ԍ装上TortoiseSVN-1.4.3。这东西爽!可以一下子把四个项目全取下来,而且不破坏eclipse目l构?/p> <p>然而,当我打开eclipseQ又到一个经兔R? subeclipse 1.0.1和TortoiseSVN-1.4.3不兼容,报告说我的subversion客户端太老(其实是它自己老了Q,直接|工了?/p> <p>左找xQ终于发现有subeclipse 1.1.6搞定了这个问题。于是升U,搞定了这个问题?/p> <p> </p> <p>要说Myeclipse对于EJB和JSP的支持确实漂亮,轻轻松松的就开发完成了。部|ƈ初步q行也是成功的?/p> <p>只有一个美中不I(x)它生成的war包和jar包不能指定名字。在EAR?mymetadata中,有这么一D配|:(x)</p> <blockquote> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">project-modules</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">project-module<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span> <span style="COLOR: #ff0000">type</span> <span style="COLOR: #0000ff">="WEB"</span> <span style="COLOR: #ff0000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />name</span> <span style="COLOR: #0000ff">="Cache Web"</span> <span style="COLOR: #ff0000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />id</span> <span style="COLOR: #0000ff">="myeclipse.1171417787608"</span> <span style="COLOR: #ff0000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />context-root</span> <span style="COLOR: #0000ff">="/cache"</span> <span style="COLOR: #ff0000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />j2ee-spec</span> <span style="COLOR: #0000ff">="1.4"</span> <span style="COLOR: #ff0000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />archive</span> <span style="COLOR: #0000ff">="Cache Web.war"</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">attributes</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">attribute </span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="webrootdir"</span> <span style="COLOR: #ff0000"> value</span> <span style="COLOR: #0000ff">="/root"</span> <span style="COLOR: #ff0000"> </span> <span style="COLOR: #0000ff">/></span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff"></</span> <span style="COLOR: #800000">attributes</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff"></</span> <span style="COLOR: #800000">project-module</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">project-module<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span> <span style="COLOR: #ff0000">type</span> <span style="COLOR: #0000ff">="EJB"</span> <span style="COLOR: #ff0000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />name</span> <span style="COLOR: #0000ff">="Cache Ejb"</span> <span style="COLOR: #ff0000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />id</span> <span style="COLOR: #0000ff">="myeclipse.1171417692847"</span> <span style="COLOR: #ff0000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />j2ee-spec</span> <span style="COLOR: #0000ff">="1.4"</span> <span style="COLOR: #ff0000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />archive</span> <span style="COLOR: #0000ff">="Cache Ejb.jar"</span> <span style="COLOR: #ff0000"> </span> <span style="COLOR: #0000ff">/></span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff"></</span> <span style="COLOR: #800000">project-modules</span> <span style="COLOR: #0000ff">></span> </div> <p> </p> </blockquote> <p>包名中带I格可不是我的风根{我试修改上面的archive属性。但是最后生成的EAR中,包名q是照旧。很有可能archive属性根本就没有作用。Myeclipse单的拿工E名做包名?/p> <p> </p> <p>没办法,就q吧。l测试。Pojo是个单独的Hibernate Pojo目。EJB和JSP都有引用到?/p> <p>在EJB中,调用Pojo得到一个ListQ里面的元素是Order对象。在EJB中从Object转成Order成功。但在JSP中{型时Q碰C个极为古怪的问题QClassCastException?/p> <p>调用EJB得到List都成功了Q可怎么从中转出Order对象?x)出问题呢?打开Debug看看QList中的是Order对象啊!太古怪了Q?/p> <p>没救了,死马当活马医吧。把q程EJB调用Ҏ(gu)本地EJB调用——问题照旧!查所有配|文Ӟ都简单得不可能出问题啊!</p> <p>……神啊,救救我吧?/p> <p>最后,在检查部|后的文件时发现了问题。WAR包和EJB包各自把Pojo目中的所有classs合ƈ了进来。这样在一个EAR中,每个pojo的class都有两䆾。JSP和EJB各引用各的,从而导致了cd不匹配?/p> <p>问题的原因在于Myeclipse中指定的部vҎ(gu)不对。ؓ(f)了省事,我在WAR和EJB的部|配|中Q都选择了“Merge dependent Java Project Delopyment"。如下图所C?/p> <p> <a href="/images/blogjava_net/welkinhu/WindowsLiveWriter/MyeclipseJ2EEProject_E3F1/image%7B0%7D%5B2%5D.png" atomicselection="true"> <img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="103" src="http://www.aygfsteel.com/images/blogjava_net/welkinhu/WindowsLiveWriter/MyeclipseJ2EEProject_E3F1/image%7B0%7D_thumb.png" width="350" border="0" /> </a> </p> <p>部|配|改为Ignore之后Q然后手工将pojo包放到jboss server的lib中,问题l于解决了?/p> <p>可是q样一来,每次我都得手工的部vpojo包。在EAR的配|中有一?Jar dependent Java projects"。选中它,q且在引用项目中选中Pojo目。Myeclipse׃(x)自动Pojo包部|到EAR中?/p> <p> <a href="/images/blogjava_net/welkinhu/WindowsLiveWriter/MyeclipseJ2EEProject_E3F1/image%7B0%7D%5B5%5D.png" atomicselection="true"> <img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="116" src="http://www.aygfsteel.com/images/blogjava_net/welkinhu/WindowsLiveWriter/MyeclipseJ2EEProject_E3F1/image%7B0%7D_thumb%5B1%5D.png" width="367" border="0" /> </a> </p> <p>然而,它部|是部v了,没把人家攑ֈclasspath中去Q一q行报错:(x)ClassNotFound。这个问题好解决Q在EJB和W(xu)AR的MANIFEST.MF中加入classpath可以了?/p> <p>一开始我用的是pojo.jarq个名字Q放到classpath中后q行成功?/p> <p>可是Myeclipse在每ơ自动生成pojo包时Q给的是工程?cache pojo.jar"Q里面有个空根{classpathL不认识它Q用引号引v来也不行?/p> <p>问题C最后,q是没有圆满解决——早知今日,我还不如直接用个ant building呢!</p> <img src ="http://www.aygfsteel.com/welkinhu/aggbug/100062.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/welkinhu/" target="_blank">Welkin Hu</a> 2007-02-16 16:15 <a href="http://www.aygfsteel.com/welkinhu/archive/2007/02/16/100062.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDBC monitor: TronTrackSQL and P6SPYhttp://www.aygfsteel.com/welkinhu/archive/2007/02/08/98683.htmlWelkin HuWelkin HuThu, 08 Feb 2007 02:38:00 GMThttp://www.aygfsteel.com/welkinhu/archive/2007/02/08/98683.htmlhttp://www.aygfsteel.com/welkinhu/comments/98683.htmlhttp://www.aygfsteel.com/welkinhu/archive/2007/02/08/98683.html#Feedback0http://www.aygfsteel.com/welkinhu/comments/commentRss/98683.htmlhttp://www.aygfsteel.com/welkinhu/services/trackbacks/98683.html 

http://www.wujianrong.com/archives/2006/11/jdbc.ht...



Welkin Hu 2007-02-08 10:38 发表评论
]]>
myeclipse中右键菜单无?/title><link>http://www.aygfsteel.com/welkinhu/archive/2007/02/01/97137.html</link><dc:creator>Welkin Hu</dc:creator><author>Welkin Hu</author><pubDate>Thu, 01 Feb 2007 01:15:00 GMT</pubDate><guid>http://www.aygfsteel.com/welkinhu/archive/2007/02/01/97137.html</guid><wfw:comment>http://www.aygfsteel.com/welkinhu/comments/97137.html</wfw:comment><comments>http://www.aygfsteel.com/welkinhu/archive/2007/02/01/97137.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/welkinhu/comments/commentRss/97137.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/welkinhu/services/trackbacks/97137.html</trackback:ping><description><![CDATA[Right-click contex menu doesn't work<a ><br />http://www.myeclipseide.com/index.php?name=PNphpBB2&file=viewtopic&t=15728</a><p><a >http://www.eclipseworld.org/bbs/read.php?tid=9920</a><br /><br /><span id="wmqeeuq" class="tpc_content"><font size="2">This is a known problem when installing the 5.1 release of MYEclipse into an install of Eclipse that has the JST and WST plugins already installed (it supreceedes our versions of the plugin that need to get loaded).<br /><br />The workaround is to load the manage configuration dialog from Help > Software Updates > Mangae Configuration. Then find the JST and WST plugins from your Eclipse install (probably under WTP) and disable them, then restart.</font></span></p><img src ="http://www.aygfsteel.com/welkinhu/aggbug/97137.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/welkinhu/" target="_blank">Welkin Hu</a> 2007-02-01 09:15 <a href="http://www.aygfsteel.com/welkinhu/archive/2007/02/01/97137.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java IDE与开发工兯用印?/title><link>http://www.aygfsteel.com/welkinhu/archive/2007/01/28/96383.html</link><dc:creator>Welkin Hu</dc:creator><author>Welkin Hu</author><pubDate>Sun, 28 Jan 2007 09:27:00 GMT</pubDate><guid>http://www.aygfsteel.com/welkinhu/archive/2007/01/28/96383.html</guid><wfw:comment>http://www.aygfsteel.com/welkinhu/comments/96383.html</wfw:comment><comments>http://www.aygfsteel.com/welkinhu/archive/2007/01/28/96383.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.aygfsteel.com/welkinhu/comments/commentRss/96383.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/welkinhu/services/trackbacks/96383.html</trackback:ping><description><![CDATA[ <p>目前Java IDE的主自然是eclipsepdQ我一直用的也是这个。在SunU极宣传Netbeans5.5的时候,我也试用了一下,q没有找Ceclipse转移q去的理由。我对它的不满意主要有两点:(x)<br />1、没有所见即所得的JSP/HTML~辑器?br />2、没有ؓ(f)Hibernate提供开发支持?br />Netbeans5.5在java 6下的桌面开发能力很强,不过短期内我q用不上?/p> <p>下面重点说说Eclipseq_下的一些开发工兗?/p> <p>1、JSP/HTML~辑工具<br />Lomboz是开源的JSP~辑器,不过它不支持所见即所得的可视化编辑。虽然我q不喜欢在可视化设计界面中通过拖拉来调整页面。但是它对代码的快速定位是我所需要的?br />Bea Workshop for JSP的确_ֽQ不q它要求把所有的JSP一个WEB-INF的目录。我的项目很大,每个模块都有独立的JSP目录Q这个要求很烦的。好像这个目录可以配|(但是必须有)Q不q由于其它原因,我已l放弃了?br />我现在选的是MyEclipseQ它的JSP~辑器做得不如Bea Workshop_和强大,但是自由Q够用。另外,MyEclipse比Bea Workshop便宜得多Q有可能说服老板买单。不q,MyEclipse集成的Hibernate功能着实让我光火了很长的时间?/p> <p>2. Hibernate集成工具<br />在Eclipse中集成Hibernate开发的有三U:(x)Hibernate官方出的Hibernate Tools, Myeclipse和Bea Workshop。Jbuilder 2007也部分支持Hibernate。Hibernate Tools是开源的Q其它的工具都是在它的基上进行增来的?/p> <p>如果使用Ant命o(h)来操作Hibernate ToolsQ你?x)发现它非常强大Q可以灵zȝ在表QHBM和pojo间互相{换。可是它的Eclipse集成太狠了点Q只要求一个逆向工程的配|文Ӟ可以根据数据库表生成所有的HBM和pojo。这个功能貌g步到位,其实很不灉|?br />Q?Q如何写好HBM是很有学问的Q我l常需要细心的调理好HBM再生成pojo?br />Q?Q每ơ生成时都一刀切的做法对于增量开发来说是个灾难。好不容易调理好的HBM和PojoQ一下子全被冲掉了?br />Q?Q它的数据库q接也有个问题,不会(x)qo(h)SchemaQ每ơ都把所有的数据库列出来。我们的开发数据库服务器上安装有三四十个数据库Q想惛_么恐怖啊?br />Hibernate Tools最强的功能Q当数HQL~辑器。可以查错,可以查最l生成的SQLQ可以得到运行结果,可以d参数。这些功能实在是太有用了?/p> <p>Myeclipse对Hibernate Toolsq行了改q。所以它和原生的Hibernate Tools共存时会(x)发生一些奇怪的问题。Myeclipse中有两个改进非常:(x)指定数据库SchemaQ再也不用在三四个数据库中找我的那䆾试验CQ,Ҏ(gu)选中的HBM生成PojoQ放心大胆的用吧Q已l做好的HBM和Pojo不会(x)再被冲掉了)?br />不过QMyeclipse对HQL~辑器的改进有点让人光火了。首先是q接问题Q横竖就是连不上数据库,左找x找不到原因,最后把Eclipse workspace重徏Q把相同的配|连接,一下子又可以了?br />其次QMyeclipse没有提供新徏HQL~辑器的菜单Q而是在我手工建立一个hql的文件后Q在打开它时调用HQL~辑器!打开的过E可能涉?qing)到数据库连接,非常慢。如果你在退出eclipse中没有关掉HQL文gQ那么再ơ进入eclipse的时候,(zhn)先d杯茶Q慢慢等吧?/p> <p>Bea Workshop各方面做得都非常_致QHiberenate集成也不例外Q各cȝ辑器的功能布局明了易用。但是我在试用时到一个难以置信的致命的bugQ所有Bea Workshop~辑器和对话框中的文本输入框基本不接收光标!<br />q是什么概念?是说你没法点进文本框,没法输入M东西。我唯一成功的一ơ是在没有光标的情况下,乱打了几个字母再回R。对话框没有昄M东西直接关闭Q但在主~辑器中我打的字母显CZ出来。不q除了文本框外,其它的如下拉框,选择框都正常?br />哪个开发h员会(x)么离qBug啊!我试q两台机Q问题一模一栗难道是因ؓ(f)我的JDK?.5的缘故?Q?br />不管什么原因,我是没办法再试下MQ只好将其请Z我的?sh)脑。在请出之前Q通过菜单查,没有发现指定HBM生成Pojo的功能。这两大原因Q够我攑ּ它了?/p> <p>Jbuilder 2007做得太强了。我用它明显感觉脚I大鞋。h家根本不希罕Hibernate。仅仅把Hiberenate作ؓ(f)EJB 3.0和JPA的一U实现方式。所以根据没有HBMq一说。而且是彻头彻可视化MDA开发。真的需要一个明星团队,在严格的程支持下,才能玩{Jbuilder 2007。我两个条g都不W合Q最重要的是老板嫌它太贵Q只能放弃?/p> <p> <span id="wmqeeuq" class="ztags"> <span id="wmqeeuq" class="ztagspace">Technorati</span> : <a class="ztag" rel="tag">eclipse</a>, <a class="ztag" rel="tag">hibernate</a>, <a class="ztag" rel="tag">java</a>, <a class="ztag" rel="tag">jsp</a>, <a class="ztag" rel="tag">myeclipse</a></span> </p> <img src ="http://www.aygfsteel.com/welkinhu/aggbug/96383.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/welkinhu/" target="_blank">Welkin Hu</a> 2007-01-28 17:27 <a href="http://www.aygfsteel.com/welkinhu/archive/2007/01/28/96383.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDO 2.0 vs Hibernate 3.2.1 (I)http://www.aygfsteel.com/welkinhu/archive/2007/01/24/95685.htmlWelkin HuWelkin HuWed, 24 Jan 2007 02:50:00 GMThttp://www.aygfsteel.com/welkinhu/archive/2007/01/24/95685.htmlhttp://www.aygfsteel.com/welkinhu/comments/95685.htmlhttp://www.aygfsteel.com/welkinhu/archive/2007/01/24/95685.html#Feedback0http://www.aygfsteel.com/welkinhu/comments/commentRss/95685.htmlhttp://www.aygfsteel.com/welkinhu/services/trackbacks/95685.html最q正在做JDO 2.0与Hibernate的方案选择。JDO实现选的是JpoxQ个别问题也参看了Bea Kodo 4.1。但是今天发现JDO2.0在一关键功能上无法满要求Q有可能被直接叫停?/p>

q个功能是动态O/R Mapping。就是说Q在pȝq行Ӟ动态生成一份新的O/R MappingQ或者往原来的O/R Mapping中添加字Dc(din)ƈ且这些改动,应当无须重启Application Serverp生效?/p>

Hibernate虽然也没有很好的支持q一点,但是提供了可实现的渠道?/p>

1. 重徏SessionFactory时可以添加新的Mapping文g?/p>

2. Dynamic Component可以在pojo中将动态字D表达ؓ(f)MapQ这样只用修改Mapping文gQ不用修改javacR?/p>

3. Hibernate 3.2.1q提供不用javacȝMapping方式。在Mapping文g中,只指定entity-nameQ不指定classQHiberante׃(x)使用Map来表辑֮?/p>

Jpox没有提供上面三种渠道中的M一U。我已经在Jpox forum上发贴问了,不知道什么时候能有答复?/p>

Kodo的文档中也没有直接提刎ͼ本想去bea发脓(chung)的,但是|速太慢?/p>

Welkin Hu 2007-01-24 10:50 发表评论
]]>
Hibernate的多对一关系是如何gq加载的Q?/title><link>http://www.aygfsteel.com/welkinhu/archive/2007/01/17/94510.html</link><dc:creator>Welkin Hu</dc:creator><author>Welkin Hu</author><pubDate>Wed, 17 Jan 2007 13:54:00 GMT</pubDate><guid>http://www.aygfsteel.com/welkinhu/archive/2007/01/17/94510.html</guid><wfw:comment>http://www.aygfsteel.com/welkinhu/comments/94510.html</wfw:comment><comments>http://www.aygfsteel.com/welkinhu/archive/2007/01/17/94510.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.aygfsteel.com/welkinhu/comments/commentRss/94510.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/welkinhu/services/trackbacks/94510.html</trackback:ping><description><![CDATA[ <p>一直以为,在Hiberenate中用多对一关系表达外键Qƈ讄为gq加载时QHibernate不会(x)在查主表时去查引用表。今天的试却发C是这么回事?/p> <p>我定义了一个Topicc,其中有一个外键引用Companyc:(x)</p> <p> </p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">many-to-one </span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="company"</span> <span style="COLOR: #ff0000"> class</span> <span style="COLOR: #0000ff">="Company"</span> <span style="COLOR: #ff0000"> lazy</span> <span style="COLOR: #0000ff">="no-proxy"</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">column </span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="COMPANY"</span> <span style="COLOR: #ff0000"> length</span> <span style="COLOR: #0000ff">="32"</span> <span style="COLOR: #ff0000"> </span> <span style="COLOR: #0000ff">/></span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff"></</span> <span style="COLOR: #800000">many-to-one</span> <span style="COLOR: #0000ff">></span> </div> <p> </p> <p>试HQL如下Qselect id, company from Topic</p> <p>而我期望的SQL应当是这P(x)select boid, company from DT_TOPIC. </p> <p>l果Hiberate Tools 生成的SQL是这P(x)</p> <p> </p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #0000ff">select</span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />topic0_.BOID </span> <span style="COLOR: #0000ff">as</span> <span style="COLOR: #000000"> col_0_0_,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />topic0_.COMPANY </span> <span style="COLOR: #0000ff">as</span> <span style="COLOR: #000000"> col_1_0_,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />company1_.COMPID </span> <span style="COLOR: #0000ff">as</span> <span style="COLOR: #000000"> COMPID409_,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />company1_.COMPNAME </span> <span style="COLOR: #0000ff">as</span> <span style="COLOR: #000000"> COMPNAME409_,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />company1_.DESCRIPTION </span> <span style="COLOR: #0000ff">as</span> <span style="COLOR: #000000"> DESCRIPT3_409_,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />company1_.STATUS </span> <span style="COLOR: #0000ff">as</span> <span style="COLOR: #000000"> STATUS409_ <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span> <span style="COLOR: #0000ff">from</span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />DT_TOPIC topic0_ <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span> <span style="COLOR: #0000ff">inner</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">join</span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />XPC_COMPANY company1_ <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span> <span style="COLOR: #0000ff">on</span> <span style="COLOR: #000000"> topic0_.COMPANY</span> <span style="COLOR: #808080">=</span> <span style="COLOR: #000000">company1_.COMPID</span> </div> <p> </p> <p>Hibernate生成的SQL多做了两件媄响性能的事情:(x)</p> <p>1, 与XPC_COMPANYq行inner join?/p> <p>2Q把XPCQCOMPANY中的所有字D全取出来了?/p> <p>q样q叫什么gq加载啊Q?/p> <p> </p> <p>哪位高手能告诉我q是Z么?</p> <img src ="http://www.aygfsteel.com/welkinhu/aggbug/94510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/welkinhu/" target="_blank">Welkin Hu</a> 2007-01-17 21:54 <a href="http://www.aygfsteel.com/welkinhu/archive/2007/01/17/94510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>非凡的Altova StyleVisionQ同源输出HTMLQPDFQRTF?/title><link>http://www.aygfsteel.com/welkinhu/archive/2006/12/30/90983.html</link><dc:creator>Welkin Hu</dc:creator><author>Welkin Hu</author><pubDate>Sat, 30 Dec 2006 04:26:00 GMT</pubDate><guid>http://www.aygfsteel.com/welkinhu/archive/2006/12/30/90983.html</guid><wfw:comment>http://www.aygfsteel.com/welkinhu/comments/90983.html</wfw:comment><comments>http://www.aygfsteel.com/welkinhu/archive/2006/12/30/90983.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/welkinhu/comments/commentRss/90983.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/welkinhu/services/trackbacks/90983.html</trackback:ping><description><![CDATA[ <p>如今的XMLQ在文档生成斚w可谓大红大。用XML + XSLT可以动态生成HTML文档和表单。而XML + XSL + FO更可以动态生成PDF/RTF文档?/p> <p>所谓动态生成,是在运行,才将数据攑ֈh指定DTD/schema的XML文档中,使用预定义的XSL文档生成可供览或打印的文档?/p> <p>一般来_(d)生成HTML和PDF的XSLT要分别定义。对于HTML和PDF表现差别较大的文档,有必要用这U方法?/p> <p>但是Q对于一些格式要求较高的表单和报表,在HTML和PDF下的表现是基本一致的。这个时候就有必要用同一个样式表输出HTML和PDF。要知道Q手工定义一份XSLT可是很费工夫的?/p> <p>FOg能达到这个目标,它具备够精l的样式定义Q借助FOP{工P可直接输出PDF{格式。可惜的是,目前的主浏览器Q如IE和firefoxQƈ不能直接昄FO文档。必d其{换成HTML或XHTML。然后,我没有发CQ何的开源工具可以做到这一炏V?/p> <p> </p> <p>Altove StyleVisionQ恰到好处的实现上述目标?/p> <p>֐思义QStyleVision是用来设计样式表的Q它提供一个非常友好的GUI设计界面。它使用一个私有的XML格式(SPS)来保存样式表Q这个样式表可{换成生成HTML的XSLT和生成FO的XSLT?/p> <p>q样Q做为开发方Q购C份Altova StyleVisionQ用来设计样式表Q然后将其生成的XSLT发布l用P可以实现同源输出报表了。而最l用户可以不购买Altova StyleVision</p> <p>附图Q两U动态文档生成方?在图中体Cؓ(f)两条可选的路线):</p> <p> </p> <p> <a href="/images/blogjava_net/welkinhu/WindowsLiveWriter/AltovaStyleVisionHTMLPDFRTF_AEAA/image%7B0%7D%5B5%5D.png" atomicselection="true"> <img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="532" src="http://www.aygfsteel.com/images/blogjava_net/welkinhu/WindowsLiveWriter/AltovaStyleVisionHTMLPDFRTF_AEAA/image%7B0%7D_thumb%5B3%5D.png" width="526" border="0" /> </a> </p> <img src ="http://www.aygfsteel.com/welkinhu/aggbug/90983.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/welkinhu/" target="_blank">Welkin Hu</a> 2006-12-30 12:26 <a href="http://www.aygfsteel.com/welkinhu/archive/2006/12/30/90983.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何设计数据库表实现完整的RBAC(Z角色权限控制)http://www.aygfsteel.com/welkinhu/archive/2006/12/27/90345.htmlWelkin HuWelkin HuWed, 27 Dec 2006 09:12:00 GMThttp://www.aygfsteel.com/welkinhu/archive/2006/12/27/90345.htmlhttp://www.aygfsteel.com/welkinhu/comments/90345.htmlhttp://www.aygfsteel.com/welkinhu/archive/2006/12/27/90345.html#Feedback0http://www.aygfsteel.com/welkinhu/comments/commentRss/90345.htmlhttp://www.aygfsteel.com/welkinhu/services/trackbacks/90345.htmlRBAC(Z角色的权限控?是一个老话题了Q但是这两天我试图设计一套表l构实现完整的RBACӞ发现存在很多困难?/p>

我说的完整的RBACQ是指支持角色树(wi)形结构和角色分组。具体来_(d)应当包含如下权限控制需求:(x)

  1. 父角色可以讉K甚至是修改其子的数据,包含直接子直到最l子U?
  2. 角色可以讉K其所在组的数据?
  3. 父角色可以讉K其所有子U?从直接子U到最l子U?所在组的数据?/li>

而具体到我的pȝ中,q应当有如下需求?/p>

  1. 兼容多种数据库品。只能用单的表,视图Q存储过E和函数{实现?
  2. 同时兼容单条数据处理和批量数据处理的需求?/li>

且不些具体需求,RBAC的基本表应当如下四个Q?/p>

  • roleList表,记录所有的角色和角色组?
    • roleId: PK, 角色/l的IDQ全局唯一Q不区分角色和组?
    • roleName:角色/l的名称?
    • roleType: R - 角色QG - l?/li>
  • rolePermission表,记录每一个角?l对每一个对象的权限?
    • permissionID: PK, 无特定意义?
    • role: 角色/l的ID?
    • object: 对象的ID?
    • permission: 权限标识Q如读,写,删等?/li>
  • roleRelationship表,记录角色/l之间的关系?
    • relationId: PK, 无特定意义?
    • superiorRole: 父角?l的ID?
    • role:子角Ԍ子组Q成员角Ԍ成员l的ID?
    • relationship: 关系标识Q可在如下设|集中选取一个?
      • PG标识QP - 父子关系QG - l?成员关系?
      • PPGG标识Q在PG集上Q再加三U:(x)PP - 间接父关系QGG - l内l关p,CG - parentRole是组QchildRole的子角色或间接子角色是其成员Q或其子l?含间接子l)的成?/li>
  • objectList表,记录所有的对象?
    • objectId: PKQ对象IDQ全局唯一?
    • objectName: 对象名称?
    • ... ...

 

分析上述表结构,不难发现Q问题的关键在于从rolePermission表中d数据Ӟ如何限定角色/l的范围.

Ҏ(gu)一

如果角色和组的总量不大Q比如在100以内Q采用PPGG标识关系Q读取数据时是最快的。这个时候的SQL只需要一个输入参?roleIdQ?/p>

SELECT object FROM rolePermission p left join roleRelationship r on p.role = r.role WHERE  p.role = ?roleId or r.superiorRole = ?roleId. (未验证SQL的正?

但是Q这个方案是以极度冗余roleRelationship表的数据ZL(fng)Q比如有100个角Ԍ那么roleRelationship中将?x)?00 * 100 Q?0,000条记录。而在每次调整角色和R角色l的时候,p在roleRelationship中一ơ增加或删除100条记录。这个开销是比较大的?/p>

Ҏ(gu)?/p>

只标识PGQ查询时接收的输入参Cؓ(f)一个完整的相关角色列表?roleList?/p>

SELECT object FROM rolePermission WHERE role in (?roleList)

在系l运行时Q这?roleList通常可以从role hierarchy cache中取刎ͼ比较方便。这个方案的主要问题有二Q?/p>

1Q如?roleListq长Q用in判断性能?x)很差?/p>

2Q在有些情况下,如报表查询和pȝ外查询时Q取得roleList不太方便?/p>

Ҏ(gu)?/p>

只标识PGQ但使用如下三个数据库函数来判断角色/l之间的关系?/p>

  • boolean isChild(role, parentRole) - 如role为parentRole的子Q返回true?
  • boolean isDescendant(role, ancestorRole) - 如role为ancestorRole的子或间接子U,q回true?
  • boolean isMember(role, group) - 如role为group的成员或子组的成员,q回true?
  • boolean descendantIsMember(role, group) - 如role的子或间接子Uؓ(f)group的成员,q回true?
  • boolean isBelong(role, super) - 如role为super的子Q间接子Q成员或间接员,或者role的子(含间接子)是super的成员或子组成员Q返回true?/li>

在查询时Q也只需要接收一?roleIdQSELECT object FROM rolePemission WHERE isBelong(?roleId, role)

如何写出高性能的数据库函数是实现这个方法的关键?/p>

 

上述Ҏ(gu)仅是理论分析Q我們֐于方案二?/p>

 

l于惛_新的Ҏ(gu)了?/p>

Ҏ(gu)四,

l合Ҏ(gu)一和方案二Q在roleRelationship中,对前两(也可以是三或四U?角色Q保存其所有的下角色和组。这P如果以前两角色查询数据Q就使用Ҏ(gu)一Q如果以W三U及(qing)以下的角色查询数据,׃用方案二?/p>

仍以100个角色ؓ(f)例,每个角色要保存三个关p:(x)一U主角Ԍ二ȝ角色Q直接主角Ԍ最多有300条数据?/p>

每往角色l中加一个角Ԍ也需要加入三条数据:(x)角色本nQ一U主角Ԍ二ȝ角色?/p>

但往角色l中加一个子l,需要加入的数据量就大一些:(x)子组本nQ子l所有角Ԍ子组所有角色的一U主角色和二ȝ角色。如在多个子l中发现同一角色Q可重复保存Q但应在表中附加说明是由哪个子组导入的。这样在删除子组时就可以有选择性的删除?/p>

但重复子l的情况比较麻烦,q有{考虑。假充有lg01,g11,g12,g21。g01包含g11和g12Qg11和g12分别包含g21。从g01中删除g11Ӟ如何判断g21的去?看来q是应当在维护时判断应不应当删除?/p>

Welkin Hu 2006-12-27 17:12 发表评论
]]>
UUID and GUIDhttp://www.aygfsteel.com/welkinhu/archive/2006/12/26/90137.htmlWelkin HuWelkin HuTue, 26 Dec 2006 08:59:00 GMThttp://www.aygfsteel.com/welkinhu/archive/2006/12/26/90137.htmlhttp://www.aygfsteel.com/welkinhu/comments/90137.htmlhttp://www.aygfsteel.com/welkinhu/archive/2006/12/26/90137.html#Feedback0http://www.aygfsteel.com/welkinhu/comments/commentRss/90137.htmlhttp://www.aygfsteel.com/welkinhu/services/trackbacks/90137.html http://tb.blog.csdn.net/TrackBack.aspx?PostId=1406125

原来GUID只是UUID的一U实现?/p>

原来UUID虽长Q做数据库主键不但不?x)媄响性能Q反而对性能有所帮助?/p>

有时间我实际试一下?/p>

Welkin Hu 2006-12-26 16:59 发表评论
]]>
Outline feature bug of OpenOffice Calchttp://www.aygfsteel.com/welkinhu/archive/2006/12/18/88646.htmlWelkin HuWelkin HuMon, 18 Dec 2006 14:07:00 GMThttp://www.aygfsteel.com/welkinhu/archive/2006/12/18/88646.htmlhttp://www.aygfsteel.com/welkinhu/comments/88646.htmlhttp://www.aygfsteel.com/welkinhu/archive/2006/12/18/88646.html#Feedback0http://www.aygfsteel.com/welkinhu/comments/commentRss/88646.htmlhttp://www.aygfsteel.com/welkinhu/services/trackbacks/88646.htmlI found a serious bug when using outline feature of OpenOffice Calc.

1 Group 3 rows

2 Collapse the group, summary row (row 3#) was collapsed too.

 

3 However, I can drag and redisplay summary row (row 3#)

4 When I collapse it again, summary row (row 3#)  still be collapsed.

 

Outline of column has same bug. How could I choose OpenOffice?



Welkin Hu 2006-12-18 22:07 发表评论
]]>
Java WorldQؓ(f)什么你们的国际化实现那么差Q?/title><link>http://www.aygfsteel.com/welkinhu/archive/2006/12/06/85971.html</link><dc:creator>Welkin Hu</dc:creator><author>Welkin Hu</author><pubDate>Wed, 06 Dec 2006 14:55:00 GMT</pubDate><guid>http://www.aygfsteel.com/welkinhu/archive/2006/12/06/85971.html</guid><wfw:comment>http://www.aygfsteel.com/welkinhu/comments/85971.html</wfw:comment><comments>http://www.aygfsteel.com/welkinhu/archive/2006/12/06/85971.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.aygfsteel.com/welkinhu/comments/commentRss/85971.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/welkinhu/services/trackbacks/85971.html</trackback:ping><description><![CDATA[ <p>目前Java开源世界的L力量来自p国家Q单U的p背景D了许多著名的产品虽然L(fng)支持UnicodeQ在国际化实C表现极ؓ(f)p糕。在此略举近期碰到的二三例?/p> <ol> <li>JRE中的zipcL法正保存压~文件的中文名。ؓ(f)此Ant目不得不写了自qzipcR? </li> <li>Eclipse中code assistance的快捷键与经典的winnows输入法开关键冲突Q同为Ctrl + Space。ؓ(f)此我不得不将code assistance键换为Alt + Z </li> <li>Java中很隑ֈZ个全新的localeQ必d从rt.jar中选一个? </li> <li>Java的locale基本上不允许用户再做用户U别定制?br /></li> </ol> <img src ="http://www.aygfsteel.com/welkinhu/aggbug/85971.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/welkinhu/" target="_blank">Welkin Hu</a> 2006-12-06 22:55 <a href="http://www.aygfsteel.com/welkinhu/archive/2006/12/06/85971.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>First Impress of Eclipse Scrapbookhttp://www.aygfsteel.com/welkinhu/archive/2006/12/06/85964.htmlWelkin HuWelkin HuWed, 06 Dec 2006 14:38:00 GMThttp://www.aygfsteel.com/welkinhu/archive/2006/12/06/85964.htmlhttp://www.aygfsteel.com/welkinhu/comments/85964.htmlhttp://www.aygfsteel.com/welkinhu/archive/2006/12/06/85964.html#Feedback0http://www.aygfsteel.com/welkinhu/comments/commentRss/85964.htmlhttp://www.aygfsteel.com/welkinhu/services/trackbacks/85964.html今晚闲来无事Q浏览了一下Eclipse的HelperQ发C个用于java调试的好工具Q叫Scrapbook。这个单词的中文意思是剪脓(chung)薄。这个工L(fng)功能有点像VB的立即窗口和VS.net中的命o(h)H口。当你输入一D늮单的java表达式或代码Ӟ它可以立xC出l果|或执行代码ƈ输出l果到Console中。这个功能能够大大提高检小D代码的效率?/p>

Welkin Hu 2006-12-06 22:38 发表评论
]]>
Java开发工兯用印?/title><link>http://www.aygfsteel.com/welkinhu/archive/2006/11/08/79814.html</link><dc:creator>Welkin Hu</dc:creator><author>Welkin Hu</author><pubDate>Wed, 08 Nov 2006 04:16:00 GMT</pubDate><guid>http://www.aygfsteel.com/welkinhu/archive/2006/11/08/79814.html</guid><wfw:comment>http://www.aygfsteel.com/welkinhu/comments/79814.html</wfw:comment><comments>http://www.aygfsteel.com/welkinhu/archive/2006/11/08/79814.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/welkinhu/comments/commentRss/79814.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/welkinhu/services/trackbacks/79814.html</trackback:ping><description><![CDATA[ <p> <span id="wmqeeuq" class="ztags"> <span id="wmqeeuq" class="ztagspace">目前Java IDE的主自然是eclipsepdQ我一直用的也是这个。在SunU极宣传Netbeans5.5的时候,我也试用了一下,q没有找Ceclipse转移q去的理由。我对它的不满意主要有两点:(x)<br />1、没有所见即所得的JSP/HTML~辑器?br />2、没有ؓ(f)Hibernate提供开发支持?br />Netbeans5.5在java 6下的桌面开发能力很强,不过短期内我q用不上?/span> </span> </p> <p> <span id="wmqeeuq" class="ztags"> <span id="wmqeeuq" class="ztagspace">下面重点说说Eclipseq_下的一些开发工兗?/span> </span> </p> <p> <span id="wmqeeuq" class="ztags"> <span id="wmqeeuq" class="ztagspace">1、JSP/HTML~辑工具<br />Lomboz是开源的JSP~辑器,不过它不支持所见即所得的可视化编辑。虽然我q不喜欢在可视化设计界面中通过拖拉来调整页面。但是它对代码的快速定位是我所需要的?br />Bea Workshop for JSP的确_ֽQ不q它要求把所有的JSP一个WEB-INF的目录。我的项目很大,每个模块都有独立的JSP目录Q这个要求很烦的。好像这个目录可以配|(但是必须有)Q不q由于其它原因,我已l放弃了?br />我现在选的是MyEclipseQ它的JSP~辑器做得不如Bea Workshop_和强大,但是自由Q够用。另外,MyEclipse比Bea Workshop便宜得多Q有可能说服老板买单。不q,MyEclipse集成的Hibernate功能着实让我光火了很长的时间?/span> </span> </p> <p> <span id="wmqeeuq" class="ztags"> <span id="wmqeeuq" class="ztagspace">2. Hibernate集成工具<br />在Eclipse中集成Hibernate开发的有三U:(x)Hibernate官方出的Hibernate Tools, Myeclipse和Bea Workshop。Jbuilder 2007也部分支持Hibernate。Hibernate Tools是开源的Q其它的工具都是在它的基上进行增来的?/span> </span> </p> <p> <span id="wmqeeuq" class="ztags"> <span id="wmqeeuq" class="ztagspace">如果使用Ant命o(h)来操作Hibernate ToolsQ你?x)发现它非常强大Q可以灵zȝ在表QHBM和pojo间互相{换。可是它的Eclipse集成太狠了点Q只要求一个逆向工程的配|文Ӟ可以根据数据库表生成所有的HBM和pojo。这个功能貌g步到位,其实很不灉|?br />Q?Q如何写好HBM是很有学问的Q我l常需要细心的调理好HBM再生成pojo?br />Q?Q每ơ生成时都一刀切的做法对于增量开发来说是个灾难。好不容易调理好的HBM和PojoQ一下子全被冲掉了?br />Q?Q它的数据库q接也有个问题,不会(x)qo(h)SchemaQ每ơ都把所有的数据库列出来。我们的开发数据库服务器上安装有三四十个数据库Q想惛_么恐怖啊?br />Hibernate Tools最强的功能Q当数HQL~辑器。可以查错,可以查最l生成的SQLQ可以得到运行结果,可以d参数。这些功能实在是太有用了?/span> </span> </p> <p> <span id="wmqeeuq" class="ztags"> <span id="wmqeeuq" class="ztagspace">Myeclipse对Hibernate Toolsq行了改q。所以它和原生的Hibernate Tools共存时会(x)发生一些奇怪的问题。Myeclipse中有两个改进非常:(x)指定数据库SchemaQ再也不用在三四个数据库中找我的那䆾试验CQ,Ҏ(gu)选中的HBM生成PojoQ放心大胆的用吧Q已l做好的HBM和Pojo不会(x)再被冲掉了)?br />不过QMyeclipse对HQL~辑器的改进有点让人光火了。首先是q接问题Q横竖就是连不上数据库,左找x找不到原因,最后把Eclipse workspace重徏Q把相同的配|连接,一下子又可以了?br />其次QMyeclipse没有提供新徏HQL~辑器的菜单Q而是在我手工建立一个hql的文件后Q在打开它时调用HQL~辑器!打开的过E可能涉?qing)到数据库连接,非常慢。如果你在退出eclipse中没有关掉HQL文gQ那么再ơ进入eclipse的时候,(zhn)先d杯茶Q慢慢等吧?/span> </span> </p> <p> <span id="wmqeeuq" class="ztags"> <span id="wmqeeuq" class="ztagspace">Bea Workshop各方面做得都非常_致QHiberenate集成也不例外Q各cȝ辑器的功能布局明了易用。但是我在试用时到一个难以置信的致命的bugQ所有Bea Workshop~辑器和对话框中的文本输入框基本不接收光标!<br />q是什么概念?是说你没法点进文本框,没法输入M东西。我唯一成功的一ơ是在没有光标的情况下,乱打了几个字母再回R。对话框没有昄M东西直接关闭Q但在主~辑器中我打的字母显CZ出来。不q除了文本框外,其它的如下拉框,选择框都正常?br />哪个开发h员会(x)么离qBug啊!我试q两台机Q问题一模一栗难道是因ؓ(f)我的JDK?.5的缘故?Q?br />不管什么原因,我是没办法再试下MQ只好将其请Z我的?sh)脑。在请出之前Q通过菜单查,没有发现指定HBM生成Pojo的功能。这两大原因Q够我攑ּ它了?/span> </span> </p> <p> <span id="wmqeeuq" class="ztags"> <span id="wmqeeuq" class="ztagspace">Jbuilder 2007做得太强了。我用它明显感觉脚I大鞋。h家根本不希罕Hibernate。仅仅把Hiberenate作ؓ(f)EJB 3.0和JPA的一U实现方式。所以根据没有HBMq一说。而且是彻头彻可视化MDA开发。真的需要一个明星团队,在严格的程支持下,才能玩{Jbuilder 2007。我两个条g都不W合Q最重要的是老板嫌它太贵Q只能放弃?br /><br />Technorati</span> : <a class="ztag" rel="tag">JSP</a>, <a class="ztag" rel="tag">bea JSP workshop</a>, <a class="ztag" rel="tag">lomboz</a>, <a class="ztag" rel="tag">myeclipse</a></span> </p> <img src ="http://www.aygfsteel.com/welkinhu/aggbug/79814.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/welkinhu/" target="_blank">Welkin Hu</a> 2006-11-08 12:16 <a href="http://www.aygfsteel.com/welkinhu/archive/2006/11/08/79814.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate Issueshttp://www.aygfsteel.com/welkinhu/archive/2006/11/06/79436.htmlWelkin HuWelkin HuMon, 06 Nov 2006 08:59:00 GMThttp://www.aygfsteel.com/welkinhu/archive/2006/11/06/79436.htmlhttp://www.aygfsteel.com/welkinhu/comments/79436.htmlhttp://www.aygfsteel.com/welkinhu/archive/2006/11/06/79436.html#Feedback0http://www.aygfsteel.com/welkinhu/comments/commentRss/79436.htmlhttp://www.aygfsteel.com/welkinhu/services/trackbacks/79436.html1. Hibernate can not set null value to primitive types.
If data is null in DB, and Hibernate maps it as primitive type, An PropertyAccessException will be th rowed when.
Our solution (Discussed with Andy):
1) Ensure all Database fileds have default value.
2) Wrap all primitive value in DTO. (Andy says this is not essential.)

2. Debug Hibernate in my product

In single way one-to-many association, when update, Hibernate always update children's id to null!
Only when Bi-one-to-many association, Hibernate can update children correctly.
Do not use Hibernate List. It need a index/list-index property, which bind to a DB column, but means the real index of Java List. The List often get many null items.
Hibernate set is good. But our DTO already use ArrayList as Collection.
Children Id is missing after updated it.
Hibernate session.save normally call insert, session.update normally call update.
When update Bi-one-to-many association, parent always correct. But always insert children, can not delete and update children. CAUSE: I use a modifiable field as PK, because all children's ID is missing from JSP. In this case, I should manual delete and insert children table.

BTW, Set can not include duplicated items. However. Our DTO have no PK when it created until saved it to DB. This cause add new item fail.


Technorati : ,



Welkin Hu 2006-11-06 16:59 发表评论
]]>
Waiting for JasperIntelligencehttp://www.aygfsteel.com/welkinhu/archive/2006/05/14/46080.htmlWelkin HuWelkin HuSun, 14 May 2006 07:15:00 GMThttp://www.aygfsteel.com/welkinhu/archive/2006/05/14/46080.htmlhttp://www.aygfsteel.com/welkinhu/comments/46080.htmlhttp://www.aygfsteel.com/welkinhu/archive/2006/05/14/46080.html#Feedback1http://www.aygfsteel.com/welkinhu/comments/commentRss/46080.htmlhttp://www.aygfsteel.com/welkinhu/services/trackbacks/46080.htmlJasperSoft now provide many powerful extension around JasperReports.

http://jasperintel.sourceforge.net/

JasperServer is specifically designed to provide a Web application around JasperReports. Continuing the philosophy of JasperReports, JasperServer is aimed at providing a managed, stand alone Web reporting environment, as well as being able to be embedded in existing Java Web applications, and services to a variety of technologies through Web services, including the LAMP stack. By focusing on a clean business API and using an advanced inversion of control architecture, JasperServer can be easily integrated and customized for your needs.

JasperIntelligence is an open source business intelligence platform from JasperSoft, providing common services like security and metadata management, and the capability to easily add additional functionality. The JasperServer is the first service using the JasperIntelligence platform. Following soon will be:

  • Report and metadata designers integrated with the platform
  • OLAP user interfaces
  • Data warehouse management environments
  • Data integration services (ETL)

roadmap

JasperServer Planned Features

  • Additional report data source types: Hibernate, EJB, POJO, XML
  • RTF output of reports through the user interface
  • Additional input control types
    - Multiple select
    - Select from a database lookup
  • Import and export of repository contents
    - Supports moving between repositories ie. test to production
  • Web services and PHP example application
    - Support for PDF, Excel and RTF report renderings
  • iReport plugin for repository browsing and report deployment
    - Includes Web services for repository management
  • User Search
  • Integration of external authentication mechanisms, such as LDAP, JAAS
  • Session management without the use of cookies
  • Internationalization of the Web user interface
  • Management of resource bundles through the user interface
  • User Preferences
  • Scheduled report generation
    - Includes storage of generated content and notifications of new reports to interested users via email
  • Saving report parameters and rerunning reports using saved parameters
  • Additional documentation
    - Architecture overview
    - Javadoc


Welkin Hu 2006-05-14 15:15 发表评论
]]>
վ֩ģ壺 ϲ| | | | | ͼ| ƽ| | | | Զ| | Ƹ| | ͼʲ| ݸ| | Ȫ| ½| ̩| ̶| | Ƿ| ̩| | ɳ| Ȫ| ¡| گ| | Դ| | ̫| | | | | | | ƫ| |