??xml version="1.0" encoding="utf-8" standalone="yes"?>91网页版在线登录入口,日本视频一区在线观看,日韩最新avhttp://www.aygfsteel.com/unilobster/articles/392136.html渔R渔RWed, 28 Nov 2012 06:13:00 GMThttp://www.aygfsteel.com/unilobster/articles/392136.htmlconnect by prior start with l常?x)被用到一个表中存在递归关系的时候。比如我们经怼(x)一个比较复杂的目录?wi)存储到一个表中。或者将一些部门存储到一个表中,而这些部门互相有隶属关系。这个时候你׃(x)用到connect by prior start with?/p>

 表结构:(x)

create table TB_ORG
(
  ORGID            VARCHAR2(50) not null,
  ORGNAME          VARCHAR2(100),
  ORGPARENT        VARCHAR2(50),
)

SQL> select orgid,ORGPARENT from tb_org order by ORGid desc;

ORGID                                              ORGPARENT
-----------------                                   --------------------------------------------------
top_org                                            
newsroom                                      top_org

sjgt                                                 newsroom
bgjsyj                                             newsroom
bgjs                                                newsroom
test52                                            bgjsyj
test36                                            bgjsyj
test3                                              bgjs
test2                                              sjgt
test1                                              sjgt
tes4t1                                             bgjs

--子取?br />select * from tb_org CONNECT BY PRIOR orgparent=orgid START WITH orgid='newsroom'
-----子取父变?Q)(j)
select * from tb_org CONNECT BY PRIOR orgparent=orgid START WITH orgparent='newsroom'
--父取子(l果中没有父q条记录Q?br />select * from tb_org CONNECT BY PRIOR orgid=orgparent START WITH orgparent='newsroom'
-----父取子变形(多了父这一U)(j)
select * from tb_org connect by prior orgid=orgparent start with orgid ='newsroom'

 

 

 

注意orgid=orgparent 和orgparent=orgid


ref:http://blog.csdn.net/kenny1985/article/details/3980583



渔R 2012-11-28 14:13 发表评论
]]>
如何在Oracle中复制表l构和表数据http://www.aygfsteel.com/unilobster/articles/390083.html渔R渔RTue, 23 Oct 2012 02:11:00 GMThttp://www.aygfsteel.com/unilobster/articles/390083.htmlhttp://www.aygfsteel.com/unilobster/comments/390083.htmlhttp://www.aygfsteel.com/unilobster/articles/390083.html#Feedback0http://www.aygfsteel.com/unilobster/comments/commentRss/390083.htmlhttp://www.aygfsteel.com/unilobster/services/trackbacks/390083.html
如何在Oracle中复制表l构和表数据

1. 复制表结构及(qing)其数据:(x)

create table table_name_new as select * from table_name_old

 

2. 只复制表l构Q?/p>

create table table_name_new as select * from table_name_old where 1=2;

或者:(x)

create table table_name_new like table_name_old

 

3. 只复制表数据Q?/p>

如果两个表结构一P(x)

insert into table_name_new select * from table_name_old

如果两个表结构不一P(x)

insert into table_name_new(column1,column2...) select column1,column2... from table_name_old

Ref:http://www.cnblogs.com/youxinqiang/archive/2008/12/26/1363030.html



渔R 2012-10-23 10:11 发表评论
]]>
linux下如何启动和关闭weblogichttp://www.aygfsteel.com/unilobster/articles/389735.html渔R渔RWed, 17 Oct 2012 06:52:00 GMThttp://www.aygfsteel.com/unilobster/articles/389735.htmlhttp://www.aygfsteel.com/unilobster/comments/389735.htmlhttp://www.aygfsteel.com/unilobster/articles/389735.html#Feedback0http://www.aygfsteel.com/unilobster/comments/commentRss/389735.htmlhttp://www.aygfsteel.com/unilobster/services/trackbacks/389735.html
在你定义的域中可以找到如下命令:(x)
/[youHome]/domains/[yourDomain]/startWebLogic.sh
/[youHome]/domains/[yourDomain]/stopWebLogic.sh  

启动weblogicQ可以参考如下命令:(x)
nohup ./startWebLogic.sh &

查看后台Qnohup ?x)在当前目录下生成一个nohup.out文g作ؓ(f)输出Q?
tail -f nohup.out
或者:(x) nohup ./startWebLogic.sh >日志文g?&

查看后台 tail -f 日志文g? 
关闭weblogicQ我们更們֐于直接杀掉weblogicq程Q?
ps -ef|grep java
查找到进EID之后Q直接运行如下命令:(x)
kill -9 ID

Ref:
http://www.dedecms.com/knowledge/servers/linux-bsd/2012/0822/12969.html



渔R 2012-10-17 14:52 发表评论
]]>
oracle 旉加减l合http://www.aygfsteel.com/unilobster/articles/389732.html渔R渔RWed, 17 Oct 2012 06:45:00 GMThttp://www.aygfsteel.com/unilobster/articles/389732.htmloracle 旉加减l合

加法  
select sysdate,add_months(sysdate,12) from dual;        --?q?nbsp;
select sysdate,add_months(sysdate,1) from dual;        --??nbsp;
select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual;   --?星期 
select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from dual;   --??nbsp;
select sysdate,to_char(sysdate+1/24,'yyyy-mm-dd HH24:MI:SS') from dual;  --?时 
select sysdate,to_char(sysdate+1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual;  --?分钟 
select sysdate,to_char(sysdate+1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual;  --?U?nbsp;

减法 
select sysdate,add_months(sysdate,-12) from dual;        --?q?nbsp;
select sysdate,add_months(sysdate,-1) from dual;        --??nbsp;
select sysdate,to_char(sysdate-7,'yyyy-mm-dd HH24:MI:SS') from dual;   --?星期 
select sysdate,to_char(sysdate-1,'yyyy-mm-dd HH24:MI:SS') from dual;   --??nbsp;
select sysdate,to_char(sysdate-1/24,'yyyy-mm-dd HH24:MI:SS') from dual;  --?时 
select sysdate,to_char(sysdate-1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual;  --?分钟 
select sysdate,to_char(sysdate-1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual;  --?U?nbsp;



日期与日期之间不能相?nbsp;  

  日期与数字就可相?nbsp;  
    
  SQL>   select   sysdate+1   from   dual;   

  日期与日期可以相?nbsp;  
    
  SQL>   select   sysdate-sysdate   from   dual;   




Add_MonthsQDQXQ?nbsp;     
      q回D日期加上X个月后的日期   
      Last_DayQDQ?nbsp;  
      q回包含日期D的月份的最后一天的日期 

      
add_months(sysdate,1)加一个月   
    
  add_months(sysdate,-1)减一个月   
    
  sysdate+1   加一?nbsp; 

-------------------------------------------------------------------------------      
  Months_BetweenQD1QD2Q?nbsp;  
      q回D1、D2之间的月份数?nbsp;  
        
  New_TimeQDQZ1QZ2Q?nbsp;  
      q回时区Z1里时间ؓ(f)D时Z2时区的时?nbsp;  
        
  Next_DayQDQSQ?nbsp;  
      q回满条gS的下一?nbsp;  
    S为星期几   
        
  RoundQDQFQ?nbsp;  
      日期D按照格式Fq行舍入   
        
  Sysdate   
      q回数据库当前时?nbsp;  
        
  TruncQDQFQ?nbsp;  
      按照格式F截断旉D   
      
  另外Q日期可以直接加?nbsp;  
  如:(x)sysdate   +1,sysdate   -1 

------------------------------------------------------------ 

sysdate+1 加一?nbsp;
sysdate+1/24 ?时 
sysdate+1/(24*60) ?分钟 
sysdate+1/(24*60*60) ?U钟 


Ref:http://elvishehai.iteye.com/blog/1153601

渔R 2012-10-17 14:45 发表评论
]]>
iOS开发入门-01http://www.aygfsteel.com/unilobster/articles/369960.html渔R渔RTue, 14 Feb 2012 08:56:00 GMThttp://www.aygfsteel.com/unilobster/articles/369960.htmlhttp://www.aygfsteel.com/unilobster/comments/369960.htmlhttp://www.aygfsteel.com/unilobster/articles/369960.html#Feedback0http://www.aygfsteel.com/unilobster/comments/commentRss/369960.htmlhttp://www.aygfsteel.com/unilobster/services/trackbacks/369960.html刚开始接触iOSQ从接触的资料看Q都指向了Xcode。但是Xcode的上手不是很Ҏ(gu)Q虽然写个HelloWorld很快。因为Xcode需要Object C的灵zd用,q需要很长一D|间去学习(fn)。上头的目的是需要短q_的出东西Q因此我们{头寻扑֏外的开发工兗?br />
l合了BA的调研,我们有两个备?PhoneGap和Titanium。说实话PhoneGap到现在我也不是很熟,只知道用jQuery Mobile完全可以完成在上面的开发。需要熟(zhn)jQuery Mobile 的控件库和CSS和用方法?br />
待箋...

渔R 2012-02-14 16:56 发表评论
]]>
mysql 导出导入数据?qing)数据结?/title><link>http://www.aygfsteel.com/unilobster/articles/354335.html</link><dc:creator>渔R</dc:creator><author>渔R</author><pubDate>Thu, 14 Jul 2011 08:49:00 GMT</pubDate><guid>http://www.aygfsteel.com/unilobster/articles/354335.html</guid><wfw:comment>http://www.aygfsteel.com/unilobster/comments/354335.html</wfw:comment><comments>http://www.aygfsteel.com/unilobster/articles/354335.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/unilobster/comments/commentRss/354335.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/unilobster/services/trackbacks/354335.html</trackback:ping><description><![CDATA[<font class="Apple-style-span" face="Simsun"><span id="wmqeeuq" class="Apple-style-span" style="line-height: 24px;">导出导出数据?qing)数据结构?x)</span></font><br /><font class="Apple-style-span" face="Simsun"><span id="wmqeeuq" class="Apple-style-span" style="line-height: 24px;">     在控制台 mysql/bin</span></font><br /><div><div><br />Export: mysqldump -u root -p DATABASE >fil2.sql</div><div></div><div>Import: mysql -u root -p DATABASE <fil2.sql</div></div><div></div><font class="Apple-style-span" face="Simsun"><span id="wmqeeuq" class="Apple-style-span" style="line-height: 24px;"><br /></span><span id="wmqeeuq" class="Apple-style-span" style="line-height: 24px; "></span><span id="wmqeeuq" class="Apple-style-span" style="line-height: 24px; "></span><span id="wmqeeuq" class="Apple-style-span" style="line-height: 24px; "></span></font><img src ="http://www.aygfsteel.com/unilobster/aggbug/354335.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/unilobster/" target="_blank">渔R</a> 2011-07-14 16:49 <a href="http://www.aygfsteel.com/unilobster/articles/354335.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring+HibernateQ在applicationContext.xml中配|C3P0参数说明http://www.aygfsteel.com/unilobster/articles/341148.html渔R渔RMon, 20 Dec 2010 03:49:00 GMThttp://www.aygfsteel.com/unilobster/articles/341148.htmlhttp://www.aygfsteel.com/unilobster/comments/341148.htmlhttp://www.aygfsteel.com/unilobster/articles/341148.html#Feedback0http://www.aygfsteel.com/unilobster/comments/commentRss/341148.htmlhttp://www.aygfsteel.com/unilobster/services/trackbacks/341148.html背景Q?/strong>
在项目中遇到下面q个exception
Exception occurred while logging on

Hibernate operation: Cannot open connection; uncategorized SQLException 
for SQL [???];
SQL state [
null]; error code [0]; An SQLException was provoked by the following failure:
com.mchange.v2.resourcepool.ResourcePoolException: Attempted to use a closed or
broken resource pool; nested exception is java.sql.SQLException: An SQLException was
 provoked by the following failure: com.mchange.v2.resourcepool.ResourcePoolException:
Attempted to use a closed or broken resource pool

分析Q?/strong>
看字面的意思,是连接池出问题。因为对spring的连接池配置不熟Q所以就扑ֈ下面的文章?br /> <引用Q?a >http://hi.baidu.com/javazyw/blog/item/4e668fc7e3557ac039db49c3.html>

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <beans xmlns="http://www.springframework.org/schema/beans"
  3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4     xmlns:jee="http://www.springframework.org/schema/jee"
  5     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  6             http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.0.xsd">
  7     <bean id="dataSource"
  8         class="com.mchange.v2.c3p0.ComboPooledDataSource"
  9         destroy-method="close">
 10         <property name="driverClass">
 11             <value>com.mysql.jdbc.Driver</value>
 12         </property>
 13         <property name="jdbcUrl">
 14             <value>jdbc:mysql://192.168.3.110:3306/DBName?useUnicode=true&amp;characterEncoding=GBK</value>
 15         </property>
 16         <property name="user">
 17             <value>root</value>
 18         </property>
 19         <property name="password">
 20             <value>root</value>
 21         </property>
 22 
 23 <!--q接池中保留的最连接数?/span>-->
 24         <property name="minPoolSize">
 25             <value>5</value>
 26         </property>
 27 
 28 <!--q接池中保留的最大连接数。Default: 15 -->
 29         <property name="maxPoolSize">
 30             <value>30</value>
 31         </property>
 32 
 33 <!--初始化时获取的连接数Q取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
 34         <property name="initialPoolSize">
 35             <value>10</value>
 36         </property>
 37 
 38 <!--最大空闲时?60U内未用则q接被丢弃。若?则永不丢弃。Default: 0 -->
 39         <property name="maxIdleTime">
 40             <value>60</value>
 41         </property>
 42 
 43 <!--当连接池中的q接耗尽的时候c3p0一ơ同时获取的q接数。Default: 3 -->
 44         <property name="acquireIncrement">
 45             <value>5</value>
 46         </property>
 47 
 48 <!--JDBC的标准参敎ͼ用以控制数据源内加蝲的PreparedStatements数量。但׃预缓存的statements
 49 属于单个connection而不是整个连接池。所以设|这个参数需要考虑到多斚w的因素?br />  50 如果maxStatements与maxStatementsPerConnection均ؓ(f)0Q则~存被关闭。Default: 0-->
 51         <property name="maxStatements">
 52             <value>0</value>
 53         </property>
 54 
 55 <!--?0U检查所有连接池中的I闲q接。Default: 0 -->
 56         <property name="idleConnectionTestPeriod">
 57             <value>60</value>
 58         </property>
 59 
 60 <!--定义在从数据库获取新q接p|后重复尝试的ơ数。Default: 30 -->
 61         <property name="acquireRetryAttempts">
 62             <value>30</value>
 63         </property>
 64 
 65 <!--获取q接p|会(x)引v所有等待连接池来获取连接的U程抛出异常。但是数据源仍有?br />  66 保留Qƈ在下ơ调用getConnection()的时候l尝试获取连接。如果设为trueQ那么在试
 67 获取q接p|后该数据源将x已断开q永久关闭。Default: false-->
 68         <property name="breakAfterAcquireFailure">
 69             <value>true</value>
 70         </property>
 71 
 72 <!--因性能消耗大请只在需要的时候用它。如果设为true那么在每个connection提交?br />  73 时候都校验其有效性。徏议用idleConnectionTestPeriod或automaticTestTable
 74 {方法来提升q接试的性能。Default: false -->
 75         <property name="testConnectionOnCheckout">
 76             <value>false</value>
 77         </property>
 78     </bean>
 79     <!-- Hibernate SessionFactory -->
 80     <bean id="sessionFactory"
 81         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
 82         <property name="dataSource">
 83             <ref local="dataSource" />
 84         </property>
 85         <property name="mappingResources">
 86             <list>
 87                 <value>com/xh/hibernate/vo/User.hbm.xml</value>
 88             </list>
 89         </property>
 90         <property name="hibernateProperties">
 91             <props>
 92                 <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
 93                 <prop key="hibernate.show_sql">true</prop>
 94                 <prop key="hibernate.generate_statistics">true</prop>
 95                 <prop key="hibernate.connection.release_mode">auto</prop>
 96                 <prop key="hibernate.autoReconnect">true</prop>
 97             </props>
 98         </property>
 99     </bean>
100 </beans>

应该是配|的原因。然后有扑ֈq篇个说?br /> <引用Qhttp://home.bendixinwen.cn:8080/blog/2010/01/27/1264560312821.html>
解决q个异常需要修改设|成如下Q?br />
<property name="acquireRetryAttempts">
    
<value>30</value>
</property>
<property name="acquireRetryDelay">
    
<value>100</value>
</property>
<property name="breakAfterAcquireFailure">
    
<value>false</value>
</property>
- acquireRetryAttempts 
Default: 30 
Defines how many times c3p0 will try to acquire a new Connection from the database before giving up.
 If this value is less than or equal to zero, c3p0 will keep trying to fetch a Connection indefinitely 

- acquireRetryDelay 
Default: 1000 
Milliseconds, time c3p0 will wait between acquire attempts. 

- breakAfterAcquireFailure 
Default: false 
If true, a pooled DataSource will declare itself broken and be permanently closed
if a Connection cannot be obtained from the database after making acquireRetryAttempts to acquire one.
If false, failure to obtain a Connection will cause all Threads waiting for the pool to acquire a Connection
to throw an Exception, but the DataSource will remain valid, and will attempt to acquire again following a
call to getConnection().

再分析:(x)
Z么会(x)?span style="color: #000000;">Attempted to use a closed or broken resource poolQ应该是有链接没关闭。因Z直对<session.save>?lt;geHibernateTemplate().save> q两UDAO实现方式不理解。找C面这文?br /> <引用Qhttp://jeoff.blog.51cto.com/186264/133434>
1 自动生成hibernate配置文g的时候,?x)在dao层用到getSession()Ҏ(gu)来操作数据库记录Q但是他q有个方法getHibernateTemplate()Q这两个Ҏ(gu)I竟有什么区别呢Q?br /> 2 1.使用getSession()Ҏ(gu)你只要承sessionFactoryQ而用getHibernateTemplate()Ҏ(gu)必须l承 HibernateDaoSupport当然包括sessionFactoryQ这点区别都不是特别重要的,下面q些区别很重要?br /> 3 2.getSession()Ҏ(gu)是没有经qspring包装的,spring?x)把最原始的sessionl你Q?strong>在用完之后必须自己调用相应?nbsp;closeҎ(gu)Q而且也不?x)对声明式事务进行相应的理Q一旦没有及(qing)时关闭连接,׃(x)D数据库连接池的连接数溢出Q?/strong>getHibernateTemplate()Ҏ(gu)是经qspring装的,例如d相应的声明式事务理Q由spring理相应的连接?br /> 4 在实际的使用q程中发现的getHibernateTemplate()比getSession()Ҏ(gu)要好很多Q但是有些方法在getHibernateTemplate()q没有提供,q时我们用HibernateCallback 回调的方法管理数据库.

看看黑体标注的那句话Q再看看E序代码?x)发现确实有很多使用session方式的DAO在最后没有关闭。root cause应该是他了?br />
ȝQ?/strong>
1. 是用session实现DAOQ必要在最后关闭sessionQ不然会(x)Dq接池链接溢?br /> 2.可以使用 set breakAfterAcquireFailure =false 来规避这个问题?br />
ַQ?/strong>
set breakAfterAcquireFailure =false 能不能解决问?q需要进一步检验。下回分解?br />




渔R 2010-12-20 11:49 发表评论
]]>
hibernate Restrictions用法http://www.aygfsteel.com/unilobster/articles/332688.html渔R渔RThu, 23 Sep 2010 08:50:00 GMThttp://www.aygfsteel.com/unilobster/articles/332688.htmlhttp://www.aygfsteel.com/unilobster/comments/332688.htmlhttp://www.aygfsteel.com/unilobster/articles/332688.html#Feedback0http://www.aygfsteel.com/unilobster/comments/commentRss/332688.htmlhttp://www.aygfsteel.com/unilobster/services/trackbacks/332688.html

Ҏ(gu)

说明

Restrictions.eq

Q?

Restrictions.allEq

利用Map来进行多个等于的限制

Restrictions.gt

Q?

Restrictions.ge

Q=

Restrictions.lt

Q?/p>

Restrictions.le

Q=

Restrictions.between

BETWEEN

Restrictions.like

LIKE

Restrictions.in

in

Restrictions.and

and

Restrictions.or

or

Restrictions.sqlRestriction

用SQL限定查询


QBC常用限定Ҏ(gu)

Restrictions.eq --> equal,{于.

Restrictions.allEq --> 参数为Map对象,使用key/valueq行多个{于的比?相当于多个Restrictions.eq 的效?/p>

Restrictions.gt --> great-than > 大于

Restrictions.ge --> great-equal >= 大于{于

Restrictions.lt --> less-than, < 于

Restrictions.le --> less-equal <= 于{于

Restrictions.between --> 对应SQL的between子句

Restrictions.like --> 对应SQL的LIKE子句

Restrictions.in --> 对应SQL的in子句

Restrictions.and --> and 关系

Restrictions.or --> or 关系

Restrictions.isNull --> 判断属性是否ؓ(f)I?为空则返回true

Restrictions.isNotNull --> 与isNull相反

Restrictions.sqlRestriction --> SQL限定的查?/p>

Order.asc --> Ҏ(gu)传入的字D进行升序排?/p>

Order.desc --> Ҏ(gu)传入的字D进行降序排?/p>

MatchMode.EXACT --> 字符串精匹?相当?like 'value'"

MatchMode.ANYWHERE --> 字符串在中间匚w.相当?like '%value%'"

MatchMode.START --> 字符串在最前面的位|?相当?like 'value%'"

MatchMode.END --> 字符串在最后面的位|?相当?like '%value'"



渔R 2010-09-23 16:50 发表评论
]]>
Java开发WebService实例--计数?/title><link>http://www.aygfsteel.com/unilobster/articles/331512.html</link><dc:creator>渔R</dc:creator><author>渔R</author><pubDate>Thu, 09 Sep 2010 06:23:00 GMT</pubDate><guid>http://www.aygfsteel.com/unilobster/articles/331512.html</guid><wfw:comment>http://www.aygfsteel.com/unilobster/comments/331512.html</wfw:comment><comments>http://www.aygfsteel.com/unilobster/articles/331512.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/unilobster/comments/commentRss/331512.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/unilobster/services/trackbacks/331512.html</trackback:ping><description><![CDATA[文章来源Qhttp://www.aygfsteel.com/supercrsky/articles/196012.html<br /> <br />   如果使用GOOGLE、BAIDU{搜索工P搜烦(ch)WebService的相关知识,可以查到N多的|页Q我是通过q些|页的学?fn),逐渐掌握了些WebService的相关知识。这里对那些无私奉献知识的h一q表C感谢? <p> |上关于WebService的例子,多是一些简单得不能再简单的hello world的例子,单得以至于你对WebService没有什么感觉。有了WebService的基本知识后Q我一直再惻I可以把什么样的即单又实用 的东东做成WebServiceQ开展示一下其功能特点。今天终于想C个:(x)计数器,计数器用得比较多Q功能比较独立,做成WebService可以一? 气Rؓ(f)不同pȝQ不是JSPqASPQ这是WebService的突Z点)(j)、不同应用节省此cȝ码工作,可以说以后再也不用写计数器了。只要用p 了?<br /> <br />   说了q么多废话,下面我们开始。本教程介绍一下WebService环境搭徏、服务部|的相关知识Q然后介l一个计数器的开发? <br /> <br /> q行图:(x)</p> <p><span><strong><img src="http://www.java3z.com/cwbwebhome/article/article5/img/9725623.gif" alt="" width="483" height="347" /><br /> <br /> 二、基工作</strong></span><br /> <br /> 1.开发环?br /> 我用axis做ؓ(f)Web Service引擎Q它是Apache的一个开源web service引擎。它目前最为成熟的开源web service引擎之一。下面我主要介绍一下如何用Axis搭徏web service 服务的环境?<br /> ①安装tomcat5.0应用服务器(也可以装5.5Q不q我一直在?.0Q? <br /> ②解压下载( http://ws.apache.org/AxisQ后的axis包,包中axis目录复制到tomcat目录下的webapps目录下;   <br /> ③将axis/WEB-INF/lib目录下类文g复制到tomcat目录下的common/lib目录下; <br /> ④重新启动tomcat,讉Khttp://localhost:8080/axis/happyaxis.jsp,如果能访问,表示安装成功Q? <br /> 注意Qaxis有几个可选的包,如email.jar....Q你可以找来攑ֈtomcat目录下的common/lib目录下,如果不用相关的功能也可以不用? <br /> q样Q开发环境就搭徏好了? <br /> <br /> <br /> 2.如何部vWeb Service<br /> 部v有三U方式:(x)Dynamic Invocation Interface(DII)、Stubs方式、Dynamic Proxy方式Q这里就介绍一下简单,也是我用的方式QDII? <br /> DII方式中,先写好服务的JAVA文gQ假讑֐字ؓ(f)helloworld.javaQ,然后把它Q注意是源文Ӟ(j)拯到webapps/axis目录 中,后缀Ҏ(gu)jws(此时文g名ؓ(f)Qhelloworld.jws)Q然后访问连接http://localhost: 8080/Axis/helloworld.jws?wsdlQ页面显CAxis自动生成的wsdlQ这样一个Web Service部|好了。怎么P是不是很?<br /> 我的计数器服务就是以q种方式部v的,下文中我?x)只说将计数器服务部|好Q你可不要说Q怎么部vQ我不会(x)呀。那在古代就要被打手板了。所以我惻I古代只学四书五经也是件好事呀。现在要学这么多东西Q半天学不会(x)Q手要被打烂了? </p> <p><strong>三、计数器服务的编?/strong> <br /> 计数器大安知道了,比较单。我的计数器也同L(fng)单,有以下功能及(qing)特点Q提供四U计数器QL器、月计数器、周计数器及(qing)日计数器Q;考虑到Web Service要服务于多种应用Q这个计数器q支持多个用P使用XML文g来记录数据?br /> 记录文g名ؓ(f)Qd:"counter.xml。注意,此文件在服务里是编码,如果修改名字Q请在服务程序中也进行相应的修改。文件内Ҏ(gu)式如下:(x) <br /> <?xml version="1.0" encoding="UTF-8"?><br /> <counter><br /> <item><br /> <name>wallimn</name><br /> <password>123</password><br /> <dc>59</dc><br /> <wc>59</wc><br /> <mc>59</mc><br /> <tc>59</tc><br /> <rt>2007-4-16 16:01:29</rt><br /> </item><br /> <counter><br /> 说是计数器服务,其实跟编写普通的JAVA应用没有什么两栗我的计数器代码比较单,我就不做q多的介l了Q把它脓(chung)在下面,源码中有量注释Q相信大家不看注释也看得懂。服务有只有一个接口:(x)Counter(String name, String password),以后在客L(fng)拿来用就可以了。还多说一句,我和E序使用Cdom4j解析xml包,要调试的误行准备好j(lu)ar包。部|方法请参照上文? <br /> import java.io.File;<br /> import java.io.FileWriter;<br /> import java.io.IOException;<br /> import java.text.DateFormat;<br /> import java.text.ParseException;<br /> import java.util.Calendar;<br /> import java.util.Date;<br /> import java.util.Iterator;<br /> import org.dom4j.Document;<br /> import org.dom4j.DocumentException;<br /> import org.dom4j.Element;<br /> import org.dom4j.io.SAXReader;<br /> import org.dom4j.io.XMLWriter;<br /> /**<br /> *功能Q提供计数器服务的WebServiceQ可以ؓ(f)多用h供服务?lt;br/><br /> * @version : V1.0<br /> * @author : 王力?Email: wallimn@sohu.com QQ: 54871876)<br /> * @date : 2007-4-16 下午04:32:45<br /> */<br /> public class WsCounterByWallimn {<br /> //计数器文档,注意名字名\径?br /> private final String FileN = "d:/counter.xml";<br /> private final static DateFormat DATEFORMATER = DateFormat.getDateTimeInstance();<br /> //出错的情况下q回的?br /> private final static String ERRORINFO="-1;-1;-1;-1";<br /> public WsCounterByWallimn(){ }<br /> <br /> <br /> /**<br /> *功能Q打开计数器文?lt;br/><br /> *~码Q王力猛 旉Q?007-4-16 下午04:44:29<br/><br /> */<br /> private Document openDocument(){<br /> Document doc=null;<br /> SAXReader reader = new SAXReader();<br /> try {<br /> File xmlfile = new File(FileN);<br /> doc = reader.read(xmlfile);<br /> xmlfile=null;<br /> } <br /> catch (DocumentException e) {<br /> e.printStackTrace();<br /> }<br /> return doc;<br /> }<br /> <br /> <br /> /**<br /> *功能Q取指定名称计数器的详细信息Qƈ讄计数器加1?lt;br/><br /> *~码Q王力猛 旉Q?007-4-16 下午04:49:57<br/><br /> */<br /> private synchronized String countertick( String name, String password){<br /> Document doc = openDocument();<br /> Date currdt = new java.util.Date();<br /> //mc:month counter(月计数器); dc: day counter(日计数器); <br /> //tc: total counter(总计数器); wc: week counter(周计数器);<br /> //rt: registe time登记旉<br /> String mc="-1",dc="-1",tc="-1",wc="-1",rt="-1";<br /> Element root = doc.getRootElement();<br /> Element selitem=null,item=null;<br /> for(Iterator it = root.elementIterator("item"); it.hasNext();){<br /> item = (Element)it.next();<br /> if(name.equals(item.element("name").getText())){ <br /> selitem=item;<br /> String pwd = item.elementText("password");<br /> if(!password.equals(pwd)){<br /> return ERRORINFO;//密码不对Q直接返?br /> }<br /> mc=item.element("mc").getText();<br /> dc=item.element("dc").getText();<br /> tc=item.element("tc").getText();<br /> wc=item.element("wc").getText();<br /> rt=item.element("rt").getText();<br /> break;<br /> }<br /> }<br /> <br /> //如果selitem为空Q说明没有个名字的计数器。则d一个?br /> if(selitem==null){<br /> //System.out.println("没有扑ֈq个名字的计数器Q?+name);<br /> rt=DATEFORMATER.format(currdt);<br /> selitem = doc.getRootElement().addElement("item");<br /> selitem.addElement("name").setText(name);<br /> selitem.addElement("tc").setText("0");<br /> selitem.addElement("mc").setText("0");<br /> selitem.addElement("wc").setText("0");<br /> selitem.addElement("dc").setText("0");<br /> selitem.addElement("rt").setText(rt);<br /> selitem.addElement("password").setText(password);<br /> mc="0";<br /> wc="0";<br /> dc="0";<br /> tc="0";<br /> }<br /> <br /> //处理计数器加一操作?br /> Calendar currcr=Calendar.getInstance();<br /> //L器L??br /> tc =String.valueOf(Integer.parseInt(tc)+1);<br /> selitem.element("tc").setText(tc);<br /> Date lastdt = null;<br /> try {<br /> lastdt = DATEFORMATER.parse(rt);<br /> } <br /> catch (ParseException e) {<br /> lastdt = new java.util.Date();<br /> }<br /> Calendar lastcr = Calendar.getInstance();<br /> lastcr.setTime(lastdt);<br /> currcr.setTime(currdt);<br /> //System.out.println("上次登记旉Q?+DATEFORMATER.format(lastdt));<br /> //System.out.println("本次登记旉Q?+DATEFORMATER.format(currdt));<br /> if(lastcr.get(Calendar.YEAR)==currcr.get(Calendar.YEAR)){<br /> //月相同,月计数加1<br /> if(lastcr.get(Calendar.MONTH)==currcr.get(Calendar.MONTH)){<br /> mc = String.valueOf(Integer.parseInt(mc)+1);<br /> }<br /> else{<br /> mc="1";<br /> }<br /> //日相同,日计数加1<br /> if(lastcr.get(Calendar.DAY_OF_YEAR)==currcr.get(Calendar.DAY_OF_YEAR))<br /> dc = String.valueOf(Integer.parseInt(dc)+1);<br /> else<br /> dc = "1";<br /> <br /> if(lastcr.get(Calendar.WEEK_OF_YEAR)==currcr.get(Calendar.WEEK_OF_YEAR))<br /> wc = String.valueOf(Integer.parseInt(wc)+1);<br /> else<br /> wc = "1";<br /> } <br /> else{//q不一P则月计数器、周计数器日计数器肯定也不一栗?br /> mc="1"; dc="1"; wc="1"; <br /> }<br /> selitem.element("mc").setText(mc);<br /> selitem.element("wc").setText(wc);<br /> selitem.element("dc").setText(dc);<br /> //登记记录旉<br /> selitem.element("rt").setText(DATEFORMATER.format(currdt)); </p> <p>try {<br /> XMLWriter xw = new XMLWriter(new FileWriter(FileN));<br /> xw.write(doc);<br /> xw.close();<br /> } <br /> catch (IOException e) {<br /> e.printStackTrace();<br /> } <br /> return tc+";"+mc+";"+wc+";"+dc;<br /> }<br /> /**<br /> *功能Q服务暴露的接口Q也是指定名称、密码,q回指定的计敎ͼq将计数器加1?lt;br/><br /> *~码Q王力猛 旉Q?007-4-17 上午10:05:22<br/><br /> */<br /> public String Counter(String name, String password){<br /> if(password==null || name==null)return ERRORINFO;<br /> return countertick(name, password);<br /> }<br /> }</p> <p><strong>四、客L(fng)~写</strong><br /> 客户端是个页面,Z条理清晰Q我先写个调用Web Service的类Q其内容如下Q?br /> package com.wallimn.WebService;//调试h意包?/p> <p>import org.apache.axis.client.Call;<br /> import org.apache.axis.client.Service;</p> <p>public class CounterServiceClient {<br /> private String counterarr[];</p> <p>public boolean getCounter(String CounterName, String password) {<br /> boolean res = false;<br /> try {<br /> String endpoint = "http://localhost:8080/axis/WsCounterByWallimn.jws";//此处注意Q请与你的开发环境匹?br /> Service service = new Service();<br /> Call call = (Call) service.createCall();<br /> call.setTargetEndpointAddress(new java.net.URL(endpoint));<br /> call.setOperationName("Counter");<br /> // 填写你要调用的方法名U?br /> String counter = (String) call.invoke(new Object[] { CounterName, password });<br /> counterarr = counter.split(";");<br /> res = (counterarr != null && counterarr.length == 4);<br /> } <br /> catch (Exception e) {<br /> }<br /> return res;<br /> }</p> <p>public String getDc() {<br /> return counterarr[3];<br /> }</p> <p>public String getMc() {<br /> return counterarr[1];<br /> }</p> <p>public String getTc() {<br /> return counterarr[0];<br /> }</p> <p>public String getWc() {<br /> return counterarr[2];<br /> }<br /> }</p> <p>  到页?test.jsp)上就单了Q我也把它脓(chung)在下面:(x)<br /> <%@ page language="java" import="com.wallimn.WebService.CounterServiceClient" pageEncoding="GB18030"%><br /> <%<br /> CounterServiceClient client = new CounterServiceClient();<br /> client.getCounter("hello","123");<br /> %></p> <p><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><br /> <html><br /> <head><br /> <title>计数器测试页?lt;/title><br /> <br /> <meta http-equiv="pragma" content="no-cache"><br /> <meta http-equiv="cache-control" content="no-cache"><br /> <meta http-equiv="expires" content="0"> <br /> <meta http-equiv="keywords" content="wallimn,计数?WebService"><br /> <meta http-equiv="description" content="计数器用示?><br /> </head><br /> <br /> <body><br /> <h2 align="center">计数器详?lt;/h2><br /> <hr/> <br /> 总访问量:<%=client.getTc()%> <br/><br /> 今天讉K?<%=client.getDc()%> <br/><br /> 本周讉K?<%=client.getWc()%> <br/><br /> 本月讉K?<%=client.getMc()%> <br/> <br /> <hr/> <br /> <p>Ƣ迎交流<br/>博客Qhttp://blog.csdn.net/wallimn<br/>?sh)邮Qwallimn@sohu.com</p><br /> </body><br /> </html></p> <p>五、结束语</p> x一个完整计数器的Web Service开发、用的E序的全部完成了。将上面的类、及(qing)面部vCQ意的一个上下文中,通过览器打开test.jspQ就可以看了l果了?br /> Ƣ迎讉K我的博客(http://blob.csdn.net/wallimn)留言或发邮g(wallimn@sohu.com)交流? <br /> <br /> <img src ="http://www.aygfsteel.com/unilobster/aggbug/331512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/unilobster/" target="_blank">渔R</a> 2010-09-09 14:23 <a href="http://www.aygfsteel.com/unilobster/articles/331512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux讄环境变量http://www.aygfsteel.com/unilobster/articles/310975.html渔R渔RWed, 27 Jan 2010 09:19:00 GMThttp://www.aygfsteel.com/unilobster/articles/310975.htmlhttp://www.aygfsteel.com/unilobster/comments/310975.htmlhttp://www.aygfsteel.com/unilobster/articles/310975.html#Feedback0http://www.aygfsteel.com/unilobster/comments/commentRss/310975.htmlhttp://www.aygfsteel.com/unilobster/services/trackbacks/310975.html(1)用文本编辑器打开/etc/profile

(2)在profile文g末尾加入Q?/p>

JAVA_HOME=/usr/share/jdk1.5.0_05

PATH=$JAVA_HOME/bin:$PATH

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME

export PATH

export CLASSPATH

(3)重新d

注:(x)修改文g后要想马上生效还要运? source /etc/profile不然只能在下ơ重q此用户时生效?/p>


注解Q?/p>

a. 你要?/usr/share/jdk1.5.0_05jdk 改ؓ(f)你的jdk安装目录

b. linux下用冒号“:”来分隔\?/p>

c. $PATH / $CLASSPATH / $JAVA_HOME 是用来引用原来的环境变量的??a href="javascript:;" onclick="javascript:tagshow(event, '%C9%E8%D6%C3');" target="_self">环境变量时特别要注意不能把原来的值给覆盖掉了Q这是一U常见的错误?/p>

d. CLASSPATH中当前目?#8220;.”不能?把当前目录丢掉也是常见的错误?/p>

e. export是把q三个变量导Zؓ(f)全局变量?/p>

f. 大小写必M格区分?/p>


linux 讄环境变量 http://hi.chinaunix.net/?uid-20290281-action-viewspace-itemid-30027

linux修改pȝ环境变量是否需要重启机?http://wenda.tianya.cn/wenda/thread?tid=51757d7d427012bb



渔R 2010-01-27 17:19 发表评论
]]>
Struts文g下蝲http://www.aygfsteel.com/unilobster/articles/307146.html渔R渔RThu, 24 Dec 2009 06:14:00 GMThttp://www.aygfsteel.com/unilobster/articles/307146.htmlhttp://www.aygfsteel.com/unilobster/comments/307146.htmlhttp://www.aygfsteel.com/unilobster/articles/307146.html#Feedback0http://www.aygfsteel.com/unilobster/comments/commentRss/307146.htmlhttp://www.aygfsteel.com/unilobster/services/trackbacks/307146.html  1 public void filedown(HttpServletRequest request, HttpServletResponse response,
             Member objMember)
throws Exception{
  2         FileInputStream in = null;
  3         ServletOutputStream os = null;
  4         BufferedOutputStream bos = null;
  5         String fromPageId = (String) request.getAttribute("frompageid");
  6         if(fromPageId == null) fromPageId = request.getParameter("frompageid");
  7         if(fromPageId != null) {
  8             AccessLogWriter.getInstance().writeLockLogFile(
  9                 objMember.getMemberID(), request.getSession().getId(),0,"90",fromPageId,"");
 10         }
 11         
 12         String sfilename = "";
 13         String stargetFileName = "";
 14         String submit = request.getParameter("download");                
 15         String projectid = (String) request.getAttribute("projectid");                
 16         String fileManagerId = (String) request.getAttribute("fileManagerId");
 17         String fileid = (String) request.getAttribute("fileid");
 18         
 19         if (submit != null) {
 20             sfilename = request.getParameter("downloadFileName");
 21             stargetFileName = request.getParameter("targetFileName");
 22         }                 
 23         
 24         if (sfilename==null||sfilename.equals("")) {
 25             //点击URL的情?/span>
 26             sfilename = (String) request.getAttribute("downloadFileName");
 27             stargetFileName = (String) request.getAttribute("targetFileName");
 28         }
 29         if(projectid == null){
 30             projectid = request.getParameter("projectid");
 31         }
 32         
 33         if(fileManagerId == null){
 34             fileManagerId = request.getParameter("fileManagerId");
 35         }
 36         if(fileid == null){
 37             fileid = request.getParameter("fileid");
 38         }
 39         //文字转换
 40         String ufilename = new String(sfilename.getBytes("iso-8859-1"), "Shift_JIS");
 41         if (ufilename.indexOf("?"== -1) {
 42             sfilename = ufilename;
 43         }
 44         String utargetFileName = new String(stargetFileName.getBytes("iso-8859-1"), "Shift_JIS");
 45         if (utargetFileName.indexOf("?"== -1) {
 46             stargetFileName = utargetFileName;
 47         }
 48         
 49         String saveFileName = new String(stargetFileName.getBytes("Shift_JIS"), "ISO-8859-1");
 50         
 51         //& Q?26 W号转换
 52         saveFileName =  toIEParamaterString0to127(saveFileName);
 53         
 54         File existFile = new File(sfilename.replace('\\''/'));
 55         if (!existFile.exists()) {
 56             response.setContentType("text/html; charset=SHIFT_JIS");
 57             PrintWriter out = response.getWriter();
 58             out.println(
 59             "<HTML><HEAD></HEAD><BODY>file isn't exist!</BODY></HTML>");
 60             out.close();
 61             return;
 62         }
 63         
 64         response.setHeader("Cache-Control"""); //HTTP 1.1
 65         response.setHeader("Pragma""");
 66         response.setDateHeader("Expires"3600 * 1000);
 67         
 68         response.setContentType("application/octet-stream");
 69         response.setHeader("Content-Disposition""attachment;filename=" + saveFileName);
 70         
 71         File downloadFile = new File(sfilename);
 72         response.setContentLength((int) downloadFile.length());
 73         
 74         in = new FileInputStream(sfilename);
 75         
 76         os = response.getOutputStream();
 77         bos = new BufferedOutputStream(os);
 78         
 79         byte[] abyte0 = new byte[2048];
 80         int j;
 81         int off = 0, len = abyte0.length;
 82         
 83         while ((j = in.read(abyte0, off, len)) != -1) {
 84             bos.write(abyte0, 0, j);
 85         }
 86         in.close();
 87         bos.close();
 88         os.close();
 89         if(fromPageId != null) {
 90             AccessLogWriter.getInstance().writeLockLogFile(
 91                     objMember.getMemberID(), request.getSession().getId(),1,"90",fromPageId,"");
 92         }
 93         
 94         return;            
 95     }
 96     
 97     /**
 98      * 
 99      * @param s
100      * @return
101      */
102     public String toIEParamaterString0to127(String s) {
103         StringBuffer sb = new StringBuffer();
104         for (int i = 0; i < s.length(); i++) {
105             char c = s.charAt(i);
106             if (c >= 0 && c <= 127) {
107                 try{
108                     if(c == 32){
109                         sb.append("%20");
110                     } else {
111                         sb.append(java.net.URLEncoder.encode(s.substring(i, i+1),"Shift_JIS"));
112                     }
113                 }
114                 catch(Exception e){
115                     sb.append(c);
116                 }
117             } else {
118                 if(c >= 160 && c <= 223){
119                     //半角kana 0xA0-0xDF
120                     sb.append(s.substring(i, i+1));
121                 } else {
122                     //日语汉字 1个字节:(x)0x80-0x9F?xE0-0xFC
123                     if((( c >= 128 && c <= 159|| (c >= 224 && c <= 252)) && (i +2 <= s.length())){
124                         //取两?/span>
125                         sb.append(s.substring(i, i+2));
126                         i++;
127                     } else {
128                         //已经是最后一?/span>
129                         sb.append(s.substring(i, i+1));
130                     }
131                 }
132             }
133         }
134         return sb.toString();
135     }

渔R 2009-12-24 14:14 发表评论
]]>
tomcat和weblogic工程发布差异http://www.aygfsteel.com/unilobster/articles/306599.html渔R渔RFri, 18 Dec 2009 09:38:00 GMThttp://www.aygfsteel.com/unilobster/articles/306599.htmlhttp://www.aygfsteel.com/unilobster/comments/306599.htmlhttp://www.aygfsteel.com/unilobster/articles/306599.html#Feedback0http://www.aygfsteel.com/unilobster/comments/commentRss/306599.htmlhttp://www.aygfsteel.com/unilobster/services/trackbacks/306599.html tomcat发布ӞsomeObj.getClass().getResource("/").getPath()得到是的%CATALINA_HOME%下webapps的工E的META-INF根目?br /> weblogic发布ӞsomeObj.getClass().getResource("/").getPath()得到是的base_domain目录的根目录?br /> q样取配|文件时Q会(x)出错?br />

渔R 2009-12-18 17:38 发表评论
]]>
q程调试Tomcat,Weblogichttp://www.aygfsteel.com/unilobster/articles/306595.html渔R渔RFri, 18 Dec 2009 09:12:00 GMThttp://www.aygfsteel.com/unilobster/articles/306595.htmlhttp://www.aygfsteel.com/unilobster/comments/306595.htmlhttp://www.aygfsteel.com/unilobster/articles/306595.html#Feedback0http://www.aygfsteel.com/unilobster/comments/commentRss/306595.htmlhttp://www.aygfsteel.com/unilobster/services/trackbacks/306595.html 试下Tomcat和W(xu)eblogic的远E调试?br />
===============打酱油的分割U?=======================
Tomcatq程调试
1 war包拷贝到%CATALINA_HOME%/webapps下,
psQ注意在环境变量中设|CATALINA_HOME

2 修改%CATALINA_HOME%/bin/catalina.bat文gQ?/span>
在这D代码之?br />
set _EXECJAVA=%_RUNJAVA%
set MAINCLASS
=org.apache.catalina.startup.Bootstrap
set ACTION
=start
set SECURITY_POLICY_FILE
=
set DEBUG_OPTS
=
set JPDA
=

d如下代码Q?br />
set JAVA_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE
-Xrunjdwp:transport=dt_socket,address=9999,suspend=n,server=y

要补充一点,上面是在windows下面的tomcat配置Q在linux下,必须修改catalina.sh文gQ在相应的位|添加以下代?br />
CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE
 -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9999
"

3 q行%CATALINA_HOME%/bin/startup.bat
4 在eclipse里面配置QRun->Open Run DialogQ点开左边Remote Java ApplicationQ配|你工程修改Port ?strong>9999 Q?
>dubug
5 讄断点Q调?br />
PSQ?/span>有这样一U情况,一般大安用eclipse的Tomcat插gq行开发的Q这样在%CATALINA_HOME%conf/server.xml文g里,有q样的配|?span style="background-color: #efe8ff;">
<Context path="/myPrj" reloadable="true" docBase="XXX\workspace\myPrj\WebContent"
workDir
="XXX\workspace\myPrj\work" />
要把q行LQ不然调试的q是eclispe工程里面的代码,不是调试的war包?br />
===============打酱油的兄弟的分割线====================
Weblogicq程调试
1 修改your_domain/bin/startWebLogic.cmd文gQ?br /> 在这D代码之?br />
@REM Call setDomainEnv here.

d如下代码Q?br />
set JAVA_OPTIONS=%JAVA_OPTIONS% -Xdebug -Xnoagent -Djava.compiler=NONE
-
Xrunjdwp:transport=dt_socket,address=3999,suspend=y,server=y

2 在http://localhost:7001/console下,发布war?br />
3 Start你的工程

4 在eclipse里面配置QRun->Open Run DialogQ点开左边Remote Java ApplicationQ配|你工程修改Port ?strong>3999 Q?
>dubug
5 讄断点Q调?br />
PSQ注意先后顺?/span>


渔R 2009-12-18 17:12 发表评论
]]>Struts 异常 IllegalArgumentExceptionhttp://www.aygfsteel.com/unilobster/articles/306021.html渔R渔RTue, 15 Dec 2009 06:04:00 GMThttp://www.aygfsteel.com/unilobster/articles/306021.htmlhttp://www.aygfsteel.com/unilobster/comments/306021.htmlhttp://www.aygfsteel.com/unilobster/articles/306021.html#Feedback0http://www.aygfsteel.com/unilobster/comments/commentRss/306021.htmlhttp://www.aygfsteel.com/unilobster/services/trackbacks/306021.html
在测试时两次发现
javax.servlet.ServletException: BeanUtils.populate
java.lang.IllegalArgumentException: argument type mismatch异常?br />
W一ơ,是由于在Form中定义的是String[] somethingID数组cdQ而在jsp中定义的?br /> <html:hidden property="somethingID"/>,Dcd不匹配,从而出现异常?br />
W二ơ出玎ͼ原因比较隐蔽。容我慢慢道来?br /> 两个画面QSomeList.jsp 和Some.jspQ分别对应SomeListFormQSomeListAction.java ?SomeFormQSomeChangeAction.java。功能就是打开SomeList.jsp画面Q选择某条Someq入SomeChange.jspQ修改好后返回SomeList.jsp。ؓ(f)了修正Session问题Q在Some.jsp中添加了<html:hidden property="somethingID"/>Q然后上面异常就发生了?br /> 历经挫折Q跋山涉水后扑ֈ原因。在SomeListForm中有属性String[] somethingIDQ数l类型,在SomeForm中有属性String somethingID是单值StringcdQ名字一致类型不一栗?br /> 当SomeChangeFormq回SomeListForm的时候,?x)将somethingID的g回。这时候就发生cd不匹配异怺。根本原因在于,配置struts-config.xml的时候,
<action attribute="someForm" input="/form/somechange.jsp" name="someForm"
path
="/somechange" type="com.somecorp.struts.action.SomeChangeAction">
            
<forward name="display" path="/form/somechange.jsp" />
            <forward name="return" path="/somelist.do" />

</action>
高亮q行没有讄 redirect="true"Q这L(fng)话,q回时就?x)将上个Form的D回从而导致不匚w异常?
  1. 一般来_(d)q时候的Form是不需要将D回的Q改?span style="color: #000000;"><forward name="return" path="/somelist.do" redirect="true"/>可以了?span style="color: red;">要注意其他参数的传递?/span>
  2. q有个改法就是将两个Form中同名不同类型的属性改个名字也可以?/span>

==========打酱油的分割U?===================
对于redirect="true"不理解的可以参考下面这D:(x)
在ActionForward中有一个重要的属性redirectQ当redirect=falseӞ保存存储在httph和请求上下文中的所有内容,仅在同一个应用中可用。当redirect=trueӞW(xu)eb客户端进行一ơ新的httphQ请求的资源可以在同一个应用中Q也可以不在Q原来的h参数不再保存Q原来的h上下文也被清除,新的httph仅包含ActionForward的path属性里所包含的参数。如果在同一个应用中Q用户会(x)话的上下文会(x)被维护?/span>




渔R 2009-12-15 14:04 发表评论
]]>
struts-config.xml中action元素的attribute属性的意义http://www.aygfsteel.com/unilobster/articles/304421.html渔R渔RTue, 01 Dec 2009 11:09:00 GMThttp://www.aygfsteel.com/unilobster/articles/304421.htmlhttp://www.aygfsteel.com/unilobster/comments/304421.htmlhttp://www.aygfsteel.com/unilobster/articles/304421.html#Feedback0http://www.aygfsteel.com/unilobster/comments/commentRss/304421.htmlhttp://www.aygfsteel.com/unilobster/services/trackbacks/304421.html引用Qhttp://hi.baidu.com/chenying99/blog/item/3bf7645455f6ef52574e00a4.html/cmtid/22ff23f49cfc9665dcc4747d

struts-config.xml中action元素的attribute属性的意义

我觉得attributeq是有用的?
1Q应用前提,attribute只有在设|了name后才有意义?
2Qattribute可以实现对象的重用,卛_果设|了attribute属性,在创建actionform是,?x)先L扄应的scope中是否有此对象,如果有,则重用,否则创徏新的对象?
3Q当你将创徏的acitonForm保存到相应的scope中时Q你想用一个更有意义的名字来访问它Ӟ它就有意义了。例如:(x)
配置form.
<form-bean name="employee" type="Employee"/>
配置a(chn)ction:
<action
attribute="validEmployee"
name="employee"
type="EmployeeAction"
scope="request"
path="/employee">
.....
q样可以用validEmployee在JSP面中访问了Q而不是用employee.
q在同一个form 在不同情况下有不同的意义Ӟ意义才很明显?/font>



渔R 2009-12-01 19:09 发表评论
]]>
Tomcat启动异常http://www.aygfsteel.com/unilobster/articles/300653.html渔R渔RMon, 02 Nov 2009 03:04:00 GMThttp://www.aygfsteel.com/unilobster/articles/300653.htmlhttp://www.aygfsteel.com/unilobster/comments/300653.htmlhttp://www.aygfsteel.com/unilobster/articles/300653.html#Feedback2http://www.aygfsteel.com/unilobster/comments/commentRss/300653.htmlhttp://www.aygfsteel.com/unilobster/services/trackbacks/300653.html
2009/11/02 10:52:25 org.apache.struts.action.ActionServlet initModuleDataSources
SEVERE: Initializing application data source org.apache.struts.action.DATA_SOURCE
Something unusual has occured to cause the driver to fail. Please report 
this exception:
Exception: java.security.AccessControlException: access denied
(java.net.SocketPermission 
172.28.139.113:5432 connect,resolve)
Stack Trace:

java.security.AccessControlException: access denied (java.net.SocketPermission 
172.28.139.113:5432 connect,resolve)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:
264)
    at java.security.AccessController.checkPermission(AccessController.java:
427)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:
532)
    ......


    Zq个java.security.AccessControlException摆弄半天也没解决?br />     U承"知之为知之,不知google?的原则,从网上找原因Q还是eclipse的Tomcat参数讄不对?br />     q入QWindow ->Preference ->TomcatQ在讄Tomcat路径的下面有个复选框"使用security manager启动Tomcat"Q把他设|成未选中状态。原来是安全权限不够?br />     以上?br />


渔R 2009-11-02 11:04 发表评论
]]>
Linux命o(h)http://www.aygfsteel.com/unilobster/articles/300158.html渔R渔RThu, 29 Oct 2009 04:29:00 GMThttp://www.aygfsteel.com/unilobster/articles/300158.htmlhttp://www.aygfsteel.com/unilobster/comments/300158.htmlhttp://www.aygfsteel.com/unilobster/articles/300158.html#Feedback0http://www.aygfsteel.com/unilobster/comments/commentRss/300158.htmlhttp://www.aygfsteel.com/unilobster/services/trackbacks/300158.html 照例记录几个命o(h)Q?br />
  1. #ntsysvQ?查看Linux服务Q图形界面)(j)Q空格选中取消Q?
                  ---ubuntu 启动ssh sudo apt-get install openssh-server
              
    /etc/init.d/ssh start

  2. 启动服务Q?service sshd start
                  #service sshd restartQ重新启动)(j)
  3. #rm -rf fileDirQ删除文件夹?qing)其子文件夹内?br />
  4. #mvQ移动文?重命?br />
  5. #viQ编辑器
  6. #catQ显C文件内?br />
  7. #mkdirQ创建文件夹
  8. #cpQ复制文?/li>
  9. #llQ?ls 查看文g夹内?/li>
  10. #vi /etc/sysconfig/network-scripts/ifcfg-eth0Q配|网?
    1 DEVICE=eth0
    2 ONBOOT=yes
    3 BOOTPROTO=static
    4 IPADDR=172.28.139.113
    5 NETMASK=255.255.255.128
    6 GATEWAY=172.28.139.1
  11. #/etc/init.d/network restartQ网卡重?/li>
  12. #ifconfigQ查看网卡IP
  13. #grep -lr 'message' 'path'Q在path目录下搜索含?message"字符串的文gQ包括该目录下的所有文件和子文件夹?/li>
  14. df -k /tmp 查看盘剩余I间
  15. ln -s /home/tmp tmp dtmp?home/tmp的Y链接Q可以解决磁盘剩余空间不的问题?/li>
  16. netstat -anp|grep 8080 查看占用8080端口的进E?br /> kill -9 PID 关闭q程
  17. chmod 777 file 讄文g权限。在安装postgres的时候,发生?can note create lock file"异常Q原因就?tmp文g夹对postgres权限不够D的?/li>
  18. tar czvf this.tar.gz ./*.txt  打包
    tar xzvf this.tar.gz ./ 解压
  19. # hostname               # 查看计算机名
    # uname -a # 查看内核/操作pȝ/CPU信息
    # head -n 1 /etc/issue # 查看操作pȝ版本
    # w # 查看zd用户
    # id <用户?gt; # 查看指定用户信息
    # last # 查看用户d日志
    # cut -d: -f1 /etc/passwd # 查看pȝ所有用?/pre>
  20. whoami  查看当前用户
  21. whereis File 查找文g
Linuxpȝ信息查看命o(h)大全
http://tech.idv2.com/2008/01/11/linux-sysinfo-cmds/

Linux命o(h)全集
http://linux.chinaitlab.com/special/linuxcom/



渔R 2009-10-29 12:29 发表评论
]]>
lucene使用记http://www.aygfsteel.com/unilobster/articles/299388.html渔R渔RThu, 22 Oct 2009 08:34:00 GMThttp://www.aygfsteel.com/unilobster/articles/299388.htmlhttp://www.aygfsteel.com/unilobster/comments/299388.htmlhttp://www.aygfsteel.com/unilobster/articles/299388.html#Feedback0http://www.aygfsteel.com/unilobster/comments/commentRss/299388.htmlhttp://www.aygfsteel.com/unilobster/services/trackbacks/299388.html |上说lucene是一个半成品Q深有体?x)?br />     1.lucene是一U全文搜索技术,词元是一个单词(wordQ。试图搜索一个单词的一部分或一个字母,是没有意义的Qlucene也不能实现。除非你是想搜烦(ch)一个单词的前缀Q用PrefixQuery是可以的。说到底Q还是在生成索引的时候的分析器(AnalyzerQ在作怪?br />     下面有四个英文分析器Q?br />

分析?/sup>

内部操作步骤

WhitespaceAnalyzer

在空格处q行语汇单元的切?/sup>

SimpleAnalyzer

在非字母字符处切分文本,q将其{换ؓ(f)写形式

StopAnalyzer

在非字母字符处切分文本,然后写化,再移除停用词

StandardAnalyzer

Z复杂的语法来实现语汇单元化;q种语法规则可以识别e-mail地址、首字母~写词、汉?/sup>-日语-汉语字符、字母数字等Q小写化QƈU除停用?/sup>



    切分出来的就是一个一个词元,也就是你搜烦(ch)的最单位了。不难从上面看出Qlucene对亚z字体支持有限?br />     2.试过用StandardAnalyzer分析日文英文文本。日文可以正常搜索,英文字母只能按单词搜索?br />     3.q里说一个奇怪的现象Q搜索的时候,比如文本中有"你好bcc"Q我?好bcc"可以正常搜烦(ch)Q搜"好a"竟然也可以搜到。debug代码Q看到查询的时候,有一个parseҎ(gu)Q下面说明)(j)竟然把后面的"a"L了,真正搜的??。但是搜"好b"?好d"{都搜不到。奇怪奇怪!
    4.索引好之后,可以搜索(QueryQ了。至于Query也有好多U:(x)
     |_______WildcardQuery         Q通配W查询)(j)
     |_______PhraseQuery      (短语查询) 可以限定两个term之间的距?/code>
     |_______RangeQuery            (范围查询)
     |_______MultiPhraseQuery    Q多短语查询Q?br />      |_______FuzzyQuery            Q模p查询)(j)
     |_______SpanQuery              Q跨度查询)(j)
     |_______PrefixQuery             Q前~查询Q?br />     查询的时候,也会(x)用到上面的Analyzer。根据Analyzer的不同会(x)Ҏ(gu)询的关键词进行一些处理,比如上面的去?a"。然后用处理q的关键词进行查询?br />     5.q里再说一个题外话Q什么时候生成烦(ch)引合适。M能每ơ检索的时候就来一ơ从头到生成索引吧,q显然不合hcdE动力学原理Q呵呵:(x)Q?那初步想法是Q先定你要在那里文仉面搜索,每当你的q些文g有变动时Q就触发对这个文件的索引。比如,新添文g或文件更C。这h索的时候,只检索。看D栯(g)合度也低哈Q)(j)





渔R 2009-10-22 16:34 发表评论
]]>
JAVA内置Unicode转换Ҏ(gu)http://www.aygfsteel.com/unilobster/articles/299177.html渔R渔RWed, 21 Oct 2009 04:37:00 GMThttp://www.aygfsteel.com/unilobster/articles/299177.htmlhttp://www.aygfsteel.com/unilobster/comments/299177.htmlhttp://www.aygfsteel.com/unilobster/articles/299177.html#Feedback0http://www.aygfsteel.com/unilobster/comments/commentRss/299177.htmlhttp://www.aygfsteel.com/unilobster/services/trackbacks/299177.html   在命令行界面用native2ascii工具Qjava自带的,在JAVA_HOME\bin下)(j)
  1.汉字{为Unicode:   
    C:>native2ascii   试
    l果Q\u6d4b\u8bd5  
 
    注:(x)q可以用:(x)DQ?gt;native2ascii 1.txt 2.out
   
  2.Unicode转换为汉?  
    C:>native2ascii  -reverse   \u6d4b\u8bd5
    l果Q测?br />

渔R 2009-10-21 12:37 发表评论
]]>
ORA-01795,in和exists性能http://www.aygfsteel.com/unilobster/articles/294167.html渔R渔RMon, 07 Sep 2009 05:54:00 GMThttp://www.aygfsteel.com/unilobster/articles/294167.htmlhttp://www.aygfsteel.com/unilobster/comments/294167.htmlhttp://www.aygfsteel.com/unilobster/articles/294167.html#Feedback0http://www.aygfsteel.com/unilobster/comments/commentRss/294167.htmlhttp://www.aygfsteel.com/unilobster/services/trackbacks/294167.htmlORA-01795:列表中的最大表辑ּCؓ(f)1000 "异常?br />
sql文是q样的:(x)
1 select ENAME
2   from  VIP_EMP
3  where GROUP_ID = '0001'
4    and SUBGROUP_ID = '000101'
5    and VIPNO  in
6        (select EMPNO
7           from EMP
8          where EMPTYPE = 'VIP')

调查后发玎ͼ?PLSQL Developer"?sqldeveloper"中直接运行时Q都不会(x)报错Q虽然上面子查询的记录大?000条?br /> 然后Q尝试将子查询改成拼接一个大?000的数组Q结果如愿出?ORA-01795"异常?br /> 猜想Q开发这边的数据库可能将上述sql文优化了Q但客户数据库没有经~译器优化,所以出异常?br />
可能优化成了以下的Ş式:(x)
1 select e1.ENAME from VIP_EMP e1, (select EMPNO from EMP where EMPTYPE= 'VIP') e2 
2    where e1.VIPNO = e2.EMPNO;
2        and e1.GROUP_ID = '0001'
2        and e1.SUBGROUP_ID = '000101'

最l,个h修改意见是,修改成两张表铄的Ş式,即优化以后的样子。这样修改,性能先不,臛_不会(x)出现异常?br />
q有个尾巴留下来了,是In的性能问题。现网上查到的东西贴出来?br />
1.in和exists的性能差别

 在where子句中可以用两U格式的子查询?

W一U格式是使用IN操作W,W二U格式是使用EXIST操作W?/p>

修改的exists形式Q?br />

1  select e1.ENAME
2    from VIP_EMP e1
3   where e1.GROUP_ID = '0001'
4     and e1.SUBGROUP_ID = '000101'
5     and exists (select 0
6            from EMP e2
7           where e2.EMPTYPE = 'VIP'
8             and e2.EMPNO = e1.VIPNO)

用第一U:(x)Oraclepȝ在执行IN子查询时Q首先执? 子查询,q将获得的结果列表存攑֜在一个加了烦(ch)引的临时表中。在执行子查询之前,pȝ先将L询挂P待子查询执行完毕Q存攑֜临时表中以后再执行主? 询?br />
用第二种Q通过使用 EXISTQOraclepȝ?x)首先检查主查询Q然后运行子查询直到它找到第一个匹配项Q这p省了旉。这也就是用EXISTS比用IN通常查询速度快的原因。子查询?#8216;select 'X'开始。运用EXISTS子句不管子查询从表中抽取什么数据它只查看where子句。这样优化器׃必遍历整个表而仅Ҏ(gu)索引可完成工作Q这里假? 在where语句中用的列存在烦(ch)引)(j)?br />
相对于IN子句来说QEXISTS使用相连子查询,构造v来要比IN子查询困难一些?


同时应尽可能使用NOT EXISTS来代替NOT INQ尽二者都使用了NOTQ不能用烦(ch)引而降低速度Q,NOT EXISTS要比NOT IN查询效率更高?br />
比较一致的看法是:(x)Z定在基于规则的最优化中,哪一U子句性能更佳Q不妨考虑一下,与外部查询相比,内部查询?x)返回多行记录。许多情况下QEXISTS的表现更H出Q? q是因ؓ(f)Q它需要你指定一个加入条Ӟq就可以调用一个INDEX扫描。尽如此,如果该查询的l果很小的话QIN常常表现得更好。你通常都愿意运行那? 能首先返回较?yu)的l果的查询?br />
千言万语ȝ成一句话Q?span style="color: red;">如果内表?外表用exists或not exists,反之用in或not in;

个h推荐q是用两张表铄的Ş式,直观单,臛_不会(x)出现ORA-01795异常




渔R 2009-09-07 13:54 发表评论
]]>jar打包Ҏ(gu)http://www.aygfsteel.com/unilobster/articles/292094.html渔R渔RFri, 21 Aug 2009 06:25:00 GMThttp://www.aygfsteel.com/unilobster/articles/292094.htmlhttp://www.aygfsteel.com/unilobster/comments/292094.htmlhttp://www.aygfsteel.com/unilobster/articles/292094.html#Feedback0http://www.aygfsteel.com/unilobster/comments/commentRss/292094.htmlhttp://www.aygfsteel.com/unilobster/services/trackbacks/292094.html
Ҏ(gu)Q?.使用eclipse的fatjar插g
        2.使用jar命o(h)

Ҏ(gu)1 插g
    关于fatjar的下载和安装见另外的文章Q?a title="手工制作jar2exeҎ(gu)" href="http://www.aygfsteel.com/unilobster/archive/2009/08/20/291978.html">手工制作jar2exeҎ(gu)?br />     具体使用很简单。在eclipse的包视图下,右键你的工程目录Q选中"Build Fat jar"Q按说明填写可以了。注意选对你的main class?br /> fatjar下蝲Qhttp://dxflygao.javaeye.com/blog/87812

Ҏ(gu)2 命o(h)
    1Q在你的工程目录下,新徏文gmanifest.mf。文件内Ҏ(gu)指定你的工程的入口,是包含main的那个类。类的名字必d含完整的包\径?br />     manifest.mfQ?br />
1     Main-Class: org.java.cctv.getStart
2 
    注:(x)两个注意的地方:(x)一定要在包名之前加个空|一定要在第一行的最后换一行!

    2Q在控制台进入你的工E目录,如workspace//yourProjQ输入以下命令:(x)
1    jar cvfm yourProj.jar manifest.mf *

    q样在你的当前目录下׃(x)生成一个新的jar文g?br />


渔R 2009-08-21 14:25 发表评论
]]>
eclipse插g安装http://www.aygfsteel.com/unilobster/articles/292058.html渔R渔RFri, 21 Aug 2009 02:17:00 GMThttp://www.aygfsteel.com/unilobster/articles/292058.htmlhttp://www.aygfsteel.com/unilobster/comments/292058.htmlhttp://www.aygfsteel.com/unilobster/articles/292058.html#Feedback0http://www.aygfsteel.com/unilobster/comments/commentRss/292058.htmlhttp://www.aygfsteel.com/unilobster/services/trackbacks/292058.html
PSQ网上这L(fng)文章太多Q下面是引用QƈE稍有修攏V因来源已不可考,所以就没有注明引用来源Q若下文作者有异议Q可以和我联p?..

?/span>links方式安装eclipse插g详细解释

   当前配置XP SP1Qeclipse3.0.1

   现在假设我的eclipse安装目录是D://eclipseQ新Z个文件夹目录Q?/span>D://eclipse//myplugins?span style="font-size: 10pt; font-family: SimSun;">D://eclipse//links?/span>待安装插件目录是D://eclipse//myplugins Q我要安装LanguagePackFeatureQ语a包)(j)、emf-sdo-xsd-SDK、GEF-SDK、Lombozq四个插件?/span>

   先把q四个插件程序全部放?/span>D://eclipse//myplugins目录里,分别解压。如Lomboz3.0.1.zip解压?/span>Lomboz3.0.1目录Q这个目录包含一?/span>plugins目录Q要先在Lomboz3.0.1目录中新Z个子目录eclipseQ然后把plugins目录Ud到刚建立?/span>eclipse目录中,即目录结构要是这L(fng)Q?/span>D://eclipse//myplugins//Lomboz3.0.1//eclipse//plugins 

   Eclipse 会(x)到指定的目录下去查找 eclipse//features 目录和eclipse//plugins 目录Q看是否有合法的功能部g和(或)(j)插g?/span>也就是说Q目标目录必d含一?/span> eclipse 目录。如果找刎ͼ附加的功能部件和插g在运行期配置是将是可用的Q如果链接文件是在工作区创徏之后d的,附加的功能部件和插g?x)作为新的配|变更来处理?/span>

    其它压羃文g解压后若已经包含eclipse//plugins目录Q则不需要徏立eclipse目录?/span>

    然后?/span>D://eclipse//links目录中徏立一个link文gQ比?Lomboz3.0.1.linkQ该文g内容?span>path=D://eclipse//myplugins//Lomboz3.0.1 卌个link文g要对应一个刚解压后的插g目录。新插g要新建另外的link文g?br />

说明Q?/span>

1. 插g可以分别安装在多个自定义的目录中?/span>

2. 一个自定义目录可以安装多个插g?/span>

3. link文g的文件名?qing)扩展名可以取Q意名Uͼ比如ddd.txtQ?/span>myplugin都可以?/span>

4. link文g?/span>path=插g目录?/span>path路径分隔要用\\或是//

5. ?/span>links目录也可以有多个link文gQ每?/span>link文g中的path参数都将生效?/span>

6. 插g目录可以使用相对路径(强烈Q!因ؓ(f)你的eclipse文g极有可能被拷来拷?/span>)?/span>

    q样对应的的link文g中的内容可以改?/span>path=.//myplugins//Lomboz3.0.1

7. 可以?/span>links目录中徏立一个子目录Q{UL时不用的插g到此子目录中Q加?/span>eclipse启动?/span> 

8. 如果安装后看不到插gQ把eclipse 目录下的configuration目录删除Q重启即可。或者添加eclipse启动参数-clean?/span>



渔R 2009-08-21 10:17 发表评论
]]>
手工制作jar2exeҎ(gu)http://www.aygfsteel.com/unilobster/articles/291978.html渔R渔RThu, 20 Aug 2009 09:30:00 GMThttp://www.aygfsteel.com/unilobster/articles/291978.htmlhttp://www.aygfsteel.com/unilobster/comments/291978.htmlhttp://www.aygfsteel.com/unilobster/articles/291978.html#Feedback1http://www.aygfsteel.com/unilobster/comments/commentRss/291978.htmlhttp://www.aygfsteel.com/unilobster/services/trackbacks/291978.html
隄Q因为是想用控制台console调命令,怎样不让console 的window昄出来讉K了google?br />
实现Q?.刉工Esource
        2.打包工程到jar
        3.新徏yourProj.vbs, yourProj.bat文g
        4.下蝲ScriptCryptorQ此工具用来可执行vbs文g转成exe文gQ?br />         5.yourProj.vbs转成yourProj.exe

-------------------我是分割U?---------------------------------------
1.刉?br />     没什么好多说的?br />
2.打包
    我是用了eclipse的一个打包插件fatjar打包。主要要注意的是要选好main classQ就是你E序 的入口。打包成yourProj.jar?fatjar下蝲地址Q?a title="http://sourceforge.net/projects/fjep/" >http://sourceforge.net/projects/fjep/ 。至于eclipse的插件怎么安装Q见另外帖子(eclipse插g安装)?br />
3新徏
yourProj.vbs
1 Dim objShell
2 set objShell=wscript.createObject("wscript.shell")
3 iReturn=objShell.Run("cmd.exe /C yourProj.bat"0, False)

yourProj.bat
1 @echo off
2 java -jar yourProj.jar

4下蝲
    下蝲ScriptCryptorQ最好是注册的,要不然{好的exe文g打开前会(x)弹出一个提醒你注册的小H口。下载地址Q?a title="http://www.abyssmedia.com/downloads/scriptcryptor.exe " >http://www.abyssmedia.com/downloads/scriptcryptor.exe ?注册码自己去扑֐Q支持正版?br />
5转换
    q行ScriptCryptorQ选择你的yourProj.vbsQcompileQ输入你要{成的exe文g的名?span style="color: red;">yourProj.exe。大功告成?

渔R 2009-08-20 17:30 发表评论
]]>
վ֩ģ壺 | | | բ| | | | ԭ| | | ƽ| ƽ| | | ³| | | ˺| ̨| | | ڰ| | ƽ| | | ˷| | Դ| | | ԭ| Ӫ| | ¹| | Ԫı| | ֿ| ˳| |