??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美日韩在线观看视频小说,香蕉久久夜色精品国产,亚洲国产精品久久久天堂http://www.aygfsteel.com/youngturk/archive/2016/08/09/431509.htmlyoungturkyoungturkTue, 09 Aug 2016 09:49:00 GMThttp://www.aygfsteel.com/youngturk/archive/2016/08/09/431509.htmlhttp://www.aygfsteel.com/youngturk/comments/431509.htmlhttp://www.aygfsteel.com/youngturk/archive/2016/08/09/431509.html#Feedback0http://www.aygfsteel.com/youngturk/comments/commentRss/431509.htmlhttp://www.aygfsteel.com/youngturk/services/trackbacks/431509.html
//实现压羃文g功能Q采?/span>commons-io-2.0.1.jar Q?/span>commons-compress-1.5.jar插g
        final OutputStream out = new FileOutputStream("D:/EDI/EDi.zip");  //实例文g输出?/span>
        ArchiveOutputStream os = new ArchiveStreamFactory().createArchiveOutputStream(ArchiveStreamFactory.ZIP, out);  
        //实例化存档输出流Q工厂方法创建zip的存档输出流
//        File f1 = new File(file.getPath());
        os.putArchiveEntry(new ZipArchiveEntry(file.getName()));  //生成存档文g?/span>
        IOUtils.copy(new FileInputStream(file), os);  //d拯存档文g
        
        os.closeArchiveEntry();  
        os.close();  
        
        //*************************
        try {
            File input = new File("D:/EDI/EDi.zip");//获得下蝲文g路径
            contentType="application/octet-stream";
            docStream = new FileInputStream(input);//获得输入名U?/span>
            contentDisposition =URLEncoder.encode(input.getName() ,"UTF-8");
           } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
           }  
           return "download";
WEBWORK的文件下载机制。用v来还是比较简单的?/span>
下面是用法说明:(x)
首先在一个ACTION中,如果判断有权限进行文件下载?/span>
则:(x)
1、读下蝲文gQƈ生成一个流?文g名应当从h的request中读出,或从用户的表中取出?/span>
public String downLoadFile(String fileName){
   try {
    File input = new File("e:/engilish literature.doc");
    docStream = new FileInputStream(input);
    contentDisposition = "test.txt";
   } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }  
   return "download";
}
2、将输出导向C个特D的RESULT中去。叫做Steam Result?/span>
         <action name="register" class="com.job2easy.web.user.RegisterAction">
             <result name="success" type="dispatcher">
                 <param name="location">/home/register-result.jsp</param>
             </result>
             <result name="input">
                 <param name="location">/home/register.jsp</param>
             </result>
             <result name="download" type="stream">
                 <param name="contentType">application/x-msdownload</param>
                 <param name="inputName">docStream</param>
                 <param name="bufferSize">1024</param>              
                 <param name="contentDisposition">attachment;filename="${contentDisposition}"</param>
             </result>

             <interceptor-ref name="params"/>
         </action>
3、这中间有几个参数需要配|:(x)
     contentType设成 application/x-msdownload 可以。这h览器?x)保证弹Z个下载文件的对话框?/span>
    inputName q个比较重要Q这个名字是输入的名称Q?以后要steam result的实现类中ؓ(f)Ҏ(gu)OGNL的表辑ּL扄?/span>
    contentDisposition q个是下载之后,保存在用L(fng)的文件名U?span style="color: #ff0000;">${contentDisposition} 看一下代码。如果写成上q的方式Q就有机?x)在ACTION中设|文件名?/span>
4、另外一个参敎ͼ(x)contentLength是下蝲文g的大,webwork的stream resultg实现有问题,不能Ҏ(gu)文g的大动态进行设|,只能写死?/span>
     q个参数的意义是告诉览下蝲的文件有多大Q以便浏览器正确的显C度条。如果这个功能很重要的话Q可以重新写一个RESULT来实现?/span>
?/dt>
0
t?/dt>


youngturk 2016-08-09 17:49 发表评论
]]>
l典http://www.aygfsteel.com/youngturk/archive/2016/08/08/431494.htmlyoungturkyoungturkMon, 08 Aug 2016 07:07:00 GMThttp://www.aygfsteel.com/youngturk/archive/2016/08/08/431494.htmlhttp://www.aygfsteel.com/youngturk/comments/431494.htmlhttp://www.aygfsteel.com/youngturk/archive/2016/08/08/431494.html#Feedback0http://www.aygfsteel.com/youngturk/comments/commentRss/431494.htmlhttp://www.aygfsteel.com/youngturk/services/trackbacks/431494.htmlhttp://blog.csdn.net/jackfrued/article/details/44921941

youngturk 2016-08-08 15:07 发表评论
]]>
sql行列互{http://www.aygfsteel.com/youngturk/archive/2016/08/04/431457.htmlyoungturkyoungturkThu, 04 Aug 2016 09:51:00 GMThttp://www.aygfsteel.com/youngturk/archive/2016/08/04/431457.htmlhttp://www.aygfsteel.com/youngturk/comments/431457.htmlhttp://www.aygfsteel.com/youngturk/archive/2016/08/04/431457.html#Feedback0http://www.aygfsteel.com/youngturk/comments/commentRss/431457.htmlhttp://www.aygfsteel.com/youngturk/services/trackbacks/431457.html数据列出来如下:(x)
 ID NAME    COUR SCORE
--- ------- ---- -----
  1 name_1  语文    33
  1 name_1  数学    63
  1 name_1  p    71
  1 name_1  历史    68
  1 name_1  化学    94
  2 name_2  语文    85
  2 name_2  数学     4
  2 name_2  p    98
  2 name_2  历史     9
  2 name_2  化学    12
  3 name_3  语文    49
  3 name_3  数学    96
  3 name_3  p    30
  3 name_3  历史    60
  3 name_3  化学     2
要实现的行{列的效果如下(或者类似的l果)Q?/div>
 ID NAME    SCORES
--- ------- --------------------
  1 name_1  33,63,71,94,68
  2 name_2  85,4,98,12,9
  3 name_3  49,2,60,96,30
通过case表达?/div>
select id,name,sum(case when course='语文' then score end) "语文",
sum(case when course='数学' then score end) "数学",
sum(case when course='p' then score end) "p",
sum(case when course='历史' then score end) "历史",
sum(case when course='化学' then score end) "化学"
from HANG2LIE
group by id,name;

union有去重功能:(x)
l构如下Q?/div>
 ID NAME       Chinese       Math    English    History  Chemistry
--- ------- ---------- ---------- ---------- ---------- ----------
  2 name_2          85          4         98          9         12
  1 name_1          33         63         71         68         94
  3 name_3          49         96         30         60          2
我们要实现如下的查询效果Q?span style="background-color: yellow;">列{?/span>
 ID NAME     COUR SCORE
--- -------- ---- -----
  2 name_2   语文    85
  1 name_1   语文    33
  3 name_3   语文    49
  2 name_2   数学     4
  1 name_1   数学    63
  3 name_3   数学    96
  2 name_2   p    98
  1 name_1   p    71
  3 name_3   p    30
  2 name_2   历史     9
  1 name_1   历史    68
  3 name_3   历史    60
  2 name_2   化学    12
  1 name_1   化学    94
  3 name_3   化学     2
1、集合查?/div>
实现的SQL语句Q?/div>
select id,name,'语文' course,chinese score from lie2hang
union
select id,name,'数学' course,math score from lie2hang
union
select id,name,'p' course,english score from lie2hang
union
select id,name,'历史' course,history score from lie2hang
union
select id,name,'化学' course,chemistry score from lie2hang;


youngturk 2016-08-04 17:51 发表评论
]]>oracle 分页 伪列 只能于 不能大于http://www.aygfsteel.com/youngturk/archive/2016/08/04/431449.htmlyoungturkyoungturkThu, 04 Aug 2016 00:53:00 GMThttp://www.aygfsteel.com/youngturk/archive/2016/08/04/431449.htmlhttp://www.aygfsteel.com/youngturk/comments/431449.htmlhttp://www.aygfsteel.com/youngturk/archive/2016/08/04/431449.html#Feedback0http://www.aygfsteel.com/youngturk/comments/commentRss/431449.htmlhttp://www.aygfsteel.com/youngturk/services/trackbacks/431449.htmlselect * from (select A.*, rownum rn from T_CD_LOC A where rownum > 20) where rn <41 ?br />

select * from (select t.* ,rownum rn from T_CD_LOC t where rownum<=40) where rn>=20 ?br />
firstIndex=0
pageNumber
pageSize=20
select * from (select A.*,rownum rn from T_CD_LOC a where rownum < ((firstIndex+pageNumber+1)*pageSize) where rn >((firstIndex+pageNumber)*pageSize)


youngturk 2016-08-04 08:53 发表评论
]]>js怎么h都不用http://www.aygfsteel.com/youngturk/archive/2016/07/13/431182.htmlyoungturkyoungturkWed, 13 Jul 2016 07:36:00 GMThttp://www.aygfsteel.com/youngturk/archive/2016/07/13/431182.htmlhttp://www.aygfsteel.com/youngturk/comments/431182.htmlhttp://www.aygfsteel.com/youngturk/archive/2016/07/13/431182.html#Feedback0http://www.aygfsteel.com/youngturk/comments/commentRss/431182.htmlhttp://www.aygfsteel.com/youngturk/services/trackbacks/431182.html

youngturk 2016-07-13 15:36 发表评论
]]>
Ehcache学习(fn) ?http://www.aygfsteel.com/youngturk/archive/2016/07/10/431149.htmlyoungturkyoungturkSun, 10 Jul 2016 09:14:00 GMThttp://www.aygfsteel.com/youngturk/archive/2016/07/10/431149.htmlhttp://www.aygfsteel.com/youngturk/comments/431149.htmlhttp://www.aygfsteel.com/youngturk/archive/2016/07/10/431149.html#Feedback0http://www.aygfsteel.com/youngturk/comments/commentRss/431149.htmlhttp://www.aygfsteel.com/youngturk/services/trackbacks/431149.html阅读全文

youngturk 2016-07-10 17:14 发表评论
]]>
java 虚拟机监?/title><link>http://www.aygfsteel.com/youngturk/archive/2016/07/09/431147.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Sat, 09 Jul 2016 08:06:00 GMT</pubDate><guid>http://www.aygfsteel.com/youngturk/archive/2016/07/09/431147.html</guid><wfw:comment>http://www.aygfsteel.com/youngturk/comments/431147.html</wfw:comment><comments>http://www.aygfsteel.com/youngturk/archive/2016/07/09/431147.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/youngturk/comments/commentRss/431147.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/youngturk/services/trackbacks/431147.html</trackback:ping><description><![CDATA[<p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #111111; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 23.3999996185303px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px;">3?span style="margin: 0px; padding: 0px;">JConsole</span>监控</span></p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #111111; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 23.3999996185303px; background-color: #ffffff;">     JMX(Java Management Extensions)是一个ؓ(f)应用E序植入理功能的框架。JMX是一套标准的代理和服务,实际上,用户可以在Q何Java应用E序中用这些代理和服务实现理。可以利用JDK的JConsole来访问Tomcat JMX接口实施监控Q具体步骤如下:(x)</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #111111; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 23.3999996185303px; background-color: #ffffff;">1Q首先,打开Tomcat5的bin目录中的catalina.bat文gQ添加:(x)</p><div style="line-height: 26px; margin: 5px 0px;"><pre style="white-space: pre-wrap; word-wrap: break-word; margin-top: 0px; margin-bottom: 0px; padding: 0px; font-family: 'Courier New' !important;">JAVA_OPTS=<span style="margin: 0px; padding: 0px; color: #800000; line-height: 1.5 !important;">"</span><span style="margin: 0px; padding: 0px; color: #800000; line-height: 1.5 !important;">-Xms512m -Xmx512m -Xmn256m -XX:PermSize=64m -XX:MaxPermSize=64m <span style="margin: 0px; padding: 0px; color: #993300; line-height: 1.5 !important;"><span style="margin: 0px; padding: 0px;">-Djava.rmi.server.hostname=<span style="margin: 0px; padding: 0px;">192.168.222.132</span> -Dcom.sun.management.jmxremote.port=<span style="margin: 0px; padding: 0px;">1090</span> -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false</span></span></span><span style="margin: 0px; padding: 0px; color: #993300; line-height: 1.5 !important;">"<br style="margin: 0px; padding: 0px;" /><br style="margin: 0px; padding: 0px;" /></span><span style="margin: 0px; padding: 0px;">-Dcom.sun.management.jmxremoteQ代表开启JMX的管理功?/span></pre><pre style="white-space: pre-wrap; word-wrap: break-word; margin-top: 0px; margin-bottom: 0px; padding: 0px; font-family: 'Courier New' !important;"></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #111111; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 23.3999996185303px; background-color: #ffffff;">2Q重启tomcatQƈ查看监控端口Q上面配|的1090Q是否已启动</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #111111; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 23.3999996185303px; background-color: #ffffff;">3Q打开jdk的bin目录Q如C:\Program Files\Java\jdk1.7.0_17\binQ下的JConsoleQƈ输入iP和监控端口进行连?/p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #111111; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 23.3999996185303px; background-color: #ffffff;">     <img src="http://images.cnitblog.com/i/360230/201408/031743302437353.jpg" alt="" width="561" height="358" style="border: 0px; max-width: 100%; margin: 0px; padding: 0px;" /></p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #111111; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 23.3999996185303px; background-color: #ffffff;"> </p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #111111; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 23.3999996185303px; background-color: #ffffff;">监控l果Q?/p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #111111; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 23.3999996185303px; background-color: #ffffff;">     <img src="http://images.cnitblog.com/i/360230/201408/031744319469768.jpg" alt="" width="575" height="476" style="border: 0px; max-width: 100%; margin: 0px; padding: 0px;" /></p><img src ="http://www.aygfsteel.com/youngturk/aggbug/431147.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/youngturk/" target="_blank">youngturk</a> 2016-07-09 16:06 <a href="http://www.aygfsteel.com/youngturk/archive/2016/07/09/431147.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate 删除兌?/title><link>http://www.aygfsteel.com/youngturk/archive/2016/07/09/431146.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Sat, 09 Jul 2016 06:21:00 GMT</pubDate><guid>http://www.aygfsteel.com/youngturk/archive/2016/07/09/431146.html</guid><wfw:comment>http://www.aygfsteel.com/youngturk/comments/431146.html</wfw:comment><comments>http://www.aygfsteel.com/youngturk/archive/2016/07/09/431146.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/youngturk/comments/commentRss/431146.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/youngturk/services/trackbacks/431146.html</trackback:ping><description><![CDATA[<div>http://www.itzhai.com/hibernate-one-to-many-association-mapping-configuration-and-the-cascade-delete-problem.html<span style="font-size: 13px; background-color: #eeeeee;">首先举一个简单的一对多双向兌的配|:(x)</span></div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><br />一的一端:(x)QuestionTypec?br /><br /><span style="color: #0000FF; ">package</span> com.exam.entity;<br /><span style="color: #0000FF; ">import</span> java.util.Set;<br /><span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">class</span> QuestionType {<br />    <span style="color: #0000FF; ">private</span> String typeName;<br />    <span style="color: #0000FF; ">private</span> <span style="color: #0000FF; ">char</span> typeUniqueness;<br />    <span style="color: #0000FF; ">private</span> Set quesion;<br />    <span style="color: #0000FF; ">public</span> String getTypeName() {<br />        <span style="color: #0000FF; ">return</span> typeName;<br />    }<br />    <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">void</span> setTypeName(String typeName) {<br />        <span style="color: #0000FF; ">this</span>.typeName = typeName;<br />    }<br />    <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">char</span> getTypeUniqueness() {<br />        <span style="color: #0000FF; ">return</span> typeUniqueness;<br />    }<br />    <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">void</span> setTypeUniqueness(<span style="color: #0000FF; ">char</span> typeUniqueness) {<br />        <span style="color: #0000FF; ">this</span>.typeUniqueness = typeUniqueness;<br />    }<br />    <span style="color: #0000FF; ">public</span> Set getQuesion() {<br />        <span style="color: #0000FF; ">return</span> quesion;<br />    }<br />    <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">void</span> setQuesion(Set quesion) {<br />        <span style="color: #0000FF; ">this</span>.quesion = quesion;<br />    }<br />}<br /><br />配置文gQ?br /><br /><hibernate-mapping <span style="color: #0000FF; ">package</span>="com.exam.entity"><br />    <<span style="color: #0000FF; ">class</span> name="QuestionType" table="exam_question_type"><br />        <id name="typeName" column="type_name"></id><br />        <property name="typeUniqueness"  column="type_uniqueness"/><br />        <set name="quesion" inverse="true" cascade="delete"><br />            <key column="question_type_name"/><br />            <one-to-many <span style="color: #0000FF; ">class</span>="Question"/><br />        </set><br />    </<span style="color: #0000FF; ">class</span>><br /></hibernate-mapping><br /><br />多的一端:(x)Questionc?br /><br /><span style="color: #0000FF; ">package</span> com.exam.entity;<br /><span style="color: #0000FF; ">import</span> java.util.Date;<br /><span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">class</span> Question {<br />    <span style="color: #0000FF; ">private</span> <span style="color: #0000FF; ">int</span> questionNo;<br />    <span style="color: #0000FF; ">private</span> QuestionType questionType;<br />    <span style="color: #0000FF; ">private</span> String questionsTitle;<br />    <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">int</span> getQuestionNo() {<br />        <span style="color: #0000FF; ">return</span> questionNo;<br />    }<br />    <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">void</span> setQuestionNo(<span style="color: #0000FF; ">int</span> questionNo) {<br />        <span style="color: #0000FF; ">this</span>.questionNo = questionNo;<br />    }<br />    <span style="color: #0000FF; ">public</span> QuestionType getQuestionType() {<br />        <span style="color: #0000FF; ">return</span> questionType;<br />    }<br />    <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">void</span> setQuestionType(QuestionType questionType) {<br />        <span style="color: #0000FF; ">this</span>.questionType = questionType;<br />    }<br />    <span style="color: #0000FF; ">public</span> String getQuestionsTitle() {<br />        <span style="color: #0000FF; ">return</span> questionsTitle;<br />    }<br />    <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">void</span> setQuestionsTitle(String questionsTitle) {<br />        <span style="color: #0000FF; ">this</span>.questionsTitle = questionsTitle;<br />    }<br />}<br /><br />配置文gQ?br /><br /><hibernate-mapping <span style="color: #0000FF; ">package</span>="com.exam.entity"><br />    <<span style="color: #0000FF; ">class</span> name="Question" table="exam_question"><br />        <id name="questionNo" column="question_no" ><br />            <generator <span style="color: #0000FF; ">class</span>="increment" /><br />        </id><br />        <many-to-one name="questionType" column="question_type_name"/><br />        <property name="questionsTitle" column="questions_title" length="200" />    <br />    </<span style="color: #0000FF; ">class</span>><br /></hibernate-mapping><br /><br />首先说明一下一些常用的属性:(x)<br /><br /><many-to-one>元素包含以下属性:(x)<br /><br />nameQ设定映的持久化类的属性名<br />columnQ设定和持久化类的属性对应的表的外键<br /><span style="color: #0000FF; ">class</span>Q设定持久化cȝ属性的cd<br />cascadeQ设定是否?br />lazyQ设定是否gq加?br /><br /><set>元素包含以下属性:(x)<br /><br />nameQ设定映的持久化类的属性名<br />cascadeQ设|是否?br />inverseQ设定反向控Ӟ如果为true则一的一端不l护外键<br /><key>Q设定与所兌的持久化cd应的表的外键?br />one-to-manyQ设定所兌的持久化c?br /><br />如果要对一对多兌映射q行U联删除Q可以按照上面的举例q行配置Q?br /><br />首先看到一的一端:(x)<br /><br /><set name="quesion" inverse="true" cascade="delete"><br />    <key column="question_type_name"/><br />    <one-to-many <span style="color: #0000FF; ">class</span>="Question"/><br /></set><br /><br />q里讄inverse表示一的一端不l护外键Q设|cascade=”delete”表示删除一的一端时对关联到得多的所有的对象也一起删?br /><br />再看到多的一端:(x)<br /><br /><many-to-one name="questionType" column="question_type_name"/><br /><br />q里的column表示外键的名Q需要和一的一端设|的key标签里的column保持一_(d)表示l护同一个键倹{?br /><br />可以按照如下的代码执行删除操作:(x)<br /><br />session.beginTransaction();<br /><br />QuestionType questionType = (QuestionType) session.load(QuestionType.<span style="color: #0000FF; ">class</span>, "判断?);            <br />session.delete(questionType);        <br />session.getTransaction().commit();<br /><br />q里使用load查上来的对象是持久状态的QPersistentQ,只有是Persistent状态的对象才可以用session.delete()操作q行U联删除Q由new创徏的对象属于Transient状态,不能q行session.delete()操作?/div><img src ="http://www.aygfsteel.com/youngturk/aggbug/431146.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/youngturk/" target="_blank">youngturk</a> 2016-07-09 14:21 <a href="http://www.aygfsteel.com/youngturk/archive/2016/07/09/431146.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate 删除兌?/title><link>http://www.aygfsteel.com/youngturk/archive/2016/07/09/431145.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Sat, 09 Jul 2016 06:18:00 GMT</pubDate><guid>http://www.aygfsteel.com/youngturk/archive/2016/07/09/431145.html</guid><wfw:comment>http://www.aygfsteel.com/youngturk/comments/431145.html</wfw:comment><comments>http://www.aygfsteel.com/youngturk/archive/2016/07/09/431145.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/youngturk/comments/commentRss/431145.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/youngturk/services/trackbacks/431145.html</trackback:ping><description><![CDATA[需要先删子表,再删除主表,否则报错 好文? http://www.itzhai.com/hibernate-one-to-many-association-mapping-configuration-and-the-cascade-delete-problem.html <img src ="http://www.aygfsteel.com/youngturk/aggbug/431145.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/youngturk/" target="_blank">youngturk</a> 2016-07-09 14:18 <a href="http://www.aygfsteel.com/youngturk/archive/2016/07/09/431145.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>middlegen生成pojohttp://www.aygfsteel.com/youngturk/archive/2016/07/05/431099.htmlyoungturkyoungturkTue, 05 Jul 2016 06:24:00 GMThttp://www.aygfsteel.com/youngturk/archive/2016/07/05/431099.htmlhttp://www.aygfsteel.com/youngturk/comments/431099.htmlhttp://www.aygfsteel.com/youngturk/archive/2016/07/05/431099.html#Feedback0http://www.aygfsteel.com/youngturk/comments/commentRss/431099.htmlhttp://www.aygfsteel.com/youngturk/services/trackbacks/431099.html

youngturk 2016-07-05 14:24 发表评论
]]>
MyBatis 需要研I?/title><link>http://www.aygfsteel.com/youngturk/archive/2016/06/27/431027.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Mon, 27 Jun 2016 05:47:00 GMT</pubDate><guid>http://www.aygfsteel.com/youngturk/archive/2016/06/27/431027.html</guid><wfw:comment>http://www.aygfsteel.com/youngturk/comments/431027.html</wfw:comment><comments>http://www.aygfsteel.com/youngturk/archive/2016/06/27/431027.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/youngturk/comments/commentRss/431027.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/youngturk/services/trackbacks/431027.html</trackback:ping><description><![CDATA[http://www.cnblogs.com/xdp-gacl/p/4261895.html<img src ="http://www.aygfsteel.com/youngturk/aggbug/431027.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/youngturk/" target="_blank">youngturk</a> 2016-06-27 13:47 <a href="http://www.aygfsteel.com/youngturk/archive/2016/06/27/431027.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ftp sockethttp://www.aygfsteel.com/youngturk/archive/2016/06/27/431026.htmlyoungturkyoungturkMon, 27 Jun 2016 04:45:00 GMThttp://www.aygfsteel.com/youngturk/archive/2016/06/27/431026.htmlhttp://www.aygfsteel.com/youngturk/comments/431026.htmlhttp://www.aygfsteel.com/youngturk/archive/2016/06/27/431026.html#Feedback0http://www.aygfsteel.com/youngturk/comments/commentRss/431026.htmlhttp://www.aygfsteel.com/youngturk/services/trackbacks/431026.html

youngturk 2016-06-27 12:45 发表评论
]]>
XML面试?/title><link>http://www.aygfsteel.com/youngturk/archive/2016/06/24/431013.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Fri, 24 Jun 2016 08:41:00 GMT</pubDate><guid>http://www.aygfsteel.com/youngturk/archive/2016/06/24/431013.html</guid><wfw:comment>http://www.aygfsteel.com/youngturk/comments/431013.html</wfw:comment><comments>http://www.aygfsteel.com/youngturk/archive/2016/06/24/431013.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/youngturk/comments/commentRss/431013.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/youngturk/services/trackbacks/431013.html</trackback:ping><description><![CDATA[http://blog.csdn.net/sweetsnow24/article/details/7447110 http://jingyan.baidu.com/article/b7001fe1738d9a0e7282dda6.html http://wenku.baidu.com/link?url=YjPcc8q-E9jnAEqsEJQZ7juMw8TICa0q9ppU3ICqEyQJBl4JGQynegQT03DQA0oyA-CxGAtDKJ_pvuvo3prfVeLEsxzC7VUWjWMsQVAxht_ 问题1QXML是什么?   {:(x)XML卛_扩展标记语言QExtensible Markup languageQ,你可以根据自q需要扩展XML。XML中可以轻村֮?books>, <orders>{自定义标签Q而在HTML{其他标记语a中必M用预定义的标{,比如<p>Q而不能用用户定义的标签。用DTD和XML Schema标准化XMLl构。XML主要用于从一个系l到另一pȝ的数据传输,比如企业U应用的客户端与服务端?   问题2QDTD与XML Schema有什么区别?   {:(x)DTD与XML Schema有以下区别:(x)DTD不用XML~写而XML Schema本n是xml文gQ这意味着XML解析器等已有的XML工具可以用来处理XML Schema。而且XML Schema 是设计于DTD之后的,它提供了更多的类型来映射xml文g不同的数据类型。DTDx档类型描qͼDocument Type definitionQ是定义XML文gl构的传l方式?   问题3QXPath是什么?   {:(x)XPath是用于从XML文档(g)索元素的XML技术。XML文档是结构化的,因此XPath可以从XML文g定位和检索元素、属性或倹{从数据(g)索方面来_(d)XPath与SQL很相|但是它有自己的语法和规则?   问题4QXSLT是什?   {:(x)XSLT也是常用的XML技术,用于一个XML文g转换为另一UXMLQHTML或者其他的格式。XSLT{换XML文g详细定义了自q语法Q函数和操作W。通常由XSLT引擎完成转换QXSLT引擎dXSLT语法~写的XML样式表或者XSL文g的指令。XSLT大量使用递归来执行{换。一个常见XSLT使用是XML文g中的数据作ؓ(f)HTML面昄。XSLT也可以很方便地把一UXML文g转换为另一UXML文档?   问题5Q什么是XML元素和属?   {:(x)最好D个例子来解释。下面是单的XML片断?   Xml代码   <Orders>   <Order id="123">   <Symbol>6758.T</Symbol>   <Price>2300</Price>   <Order>   <Orders>   例子中id是元素的一个属性,其他元素都没有属性?   问题6Q什么是格式良好的XML   {:(x)q个问题l常在电(sh)话面试中出现。一个格式良好的XML意味着该XML文档语法上是正确的,比如它有一个根元素Q所有的开放标{֐适地闭合Q属性值必d引号{等。如果一个XML不是格式良好的,那么它可能不能被各种XML解析器正地处理和解析?   问题7QXML命名I间是什么?它ؓ(f)什么很重要Q?   {:(x)XML命名I间与Java的packagecMQ用来避免不同来源名U相同的标签发生冲突。XML命名I间在XML文档剙使用xmlns属性定义,语法为xmlns:prefix=’URI’。prefix与XML文档中实际标{一起用。下面例子ؓ(f)XML命名I间的用?   Xml代码   <root xmlns:inst="http://instruments.com/inst"   <inst:phone>   <inst:number>837363223</inst:number>   </inst:phone>   </root>   问题8QDOM和SAX解析器有什么区?   {:(x)q又是一道常见面试题Q不仅出现在XML面试题中Q在Java面试中也?x)问到。DOM和SAX解析器的主要区别在于它们解析XML文档的方式。用DOM解析ӞXML文档以树(wi)形结构的形式加蝲到内存中Q而SAX是事仉动的解析器?   问题9QXML CDATA是什?   {:(x)q道题很单也很重要,但很多编Eh员对它的了解q不深。CDATA是指字符数据Q它有特D的指o(h)被XML解析器解析。XML解析器解析XML文档中所有的文本Q比?name>This is name of person</name>Q标{g?x)被解析Q因为标{րg可能包含XML标签Q比?name><firstname>First Name</firstname></name>。CDATA部分不会(x)被XML解析器解析?   问题10QJava的XML数据l定是什?   {:(x)Java的XMLl定指从XML文g中创建类和对象,使用Java~程语言修改XML文档。XMLl定的Java APIQJAXB提供了绑定XML文档和Java对象的便利方式。另一个可选的XMLl定Ҏ(gu)是用开源库Q比如XML Beans。Java中XMLl定的一个最大的优势是利用Java~程能力创徏和修改XML文档?   以上的XML面试问答题收集自很多~程人员Q但它们对于使用XML技术的每个人都是有用的。由于XMLhq_独立的特性,XPathQXSLTQXQuery{XML技术越来越重要。尽XML有冗余和文档体积大等~点Q但它在web服务以及(qing)带宽、速率作ؓ(f)ơ要考虑因素的系l间数据传输起很大作用,被广泛用于跨q_数据传输? <img src ="http://www.aygfsteel.com/youngturk/aggbug/431013.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/youngturk/" target="_blank">youngturk</a> 2016-06-24 16:41 <a href="http://www.aygfsteel.com/youngturk/archive/2016/06/24/431013.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL SERVER 的用hQ连接,q接?license http://www.aygfsteel.com/youngturk/archive/2016/06/24/431010.htmlyoungturkyoungturkFri, 24 Jun 2016 07:00:00 GMThttp://www.aygfsteel.com/youngturk/archive/2016/06/24/431010.htmlhttp://www.aygfsteel.com/youngturk/comments/431010.htmlhttp://www.aygfsteel.com/youngturk/archive/2016/06/24/431010.html#Feedback0http://www.aygfsteel.com/youngturk/comments/commentRss/431010.htmlhttp://www.aygfsteel.com/youngturk/services/trackbacks/431010.html

youngturk 2016-06-24 15:00 发表评论
]]>
三分钟让你看懂java|络通信http://www.aygfsteel.com/youngturk/archive/2016/06/23/430997.htmlyoungturkyoungturkThu, 23 Jun 2016 02:02:00 GMThttp://www.aygfsteel.com/youngturk/archive/2016/06/23/430997.htmlhttp://www.aygfsteel.com/youngturk/comments/430997.htmlhttp://www.aygfsteel.com/youngturk/archive/2016/06/23/430997.html#Feedback0http://www.aygfsteel.com/youngturk/comments/commentRss/430997.htmlhttp://www.aygfsteel.com/youngturk/services/trackbacks/430997.htmlpackage con120722; Java代码 收藏代码 import java.io.*; import java.net.*; public class Client { Socket socket; BufferedReader in; PrintWriter out; public Client() { try { socket = new Socket("localhost", 10000); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out = new PrintWriter(socket.getOutputStream(),true); BufferedReader line = new BufferedReader(new InputStreamReader(System.in)); out.println(line.readLine()); line.close(); out.close(); in.close(); socket.close(); } catch (IOException e) {} } public static void main(String[] args) { new Client(); } }

youngturk 2016-06-23 10:02 发表评论
]]>
Xms Xmx PermSize MaxPermSize 区别 java 内存http://www.aygfsteel.com/youngturk/archive/2016/06/21/430983.htmlyoungturkyoungturkTue, 21 Jun 2016 13:58:00 GMThttp://www.aygfsteel.com/youngturk/archive/2016/06/21/430983.htmlhttp://www.aygfsteel.com/youngturk/comments/430983.htmlhttp://www.aygfsteel.com/youngturk/archive/2016/06/21/430983.html#Feedback0http://www.aygfsteel.com/youngturk/comments/commentRss/430983.htmlhttp://www.aygfsteel.com/youngturk/services/trackbacks/430983.html

youngturk 2016-06-21 21:58 发表评论
]]>
java面试题:(x)如何解决内存溢出http://www.aygfsteel.com/youngturk/archive/2016/06/21/430982.htmlyoungturkyoungturkTue, 21 Jun 2016 13:37:00 GMThttp://www.aygfsteel.com/youngturk/archive/2016/06/21/430982.htmlhttp://www.aygfsteel.com/youngturk/comments/430982.htmlhttp://www.aygfsteel.com/youngturk/archive/2016/06/21/430982.html#Feedback0http://www.aygfsteel.com/youngturk/comments/commentRss/430982.htmlhttp://www.aygfsteel.com/youngturk/services/trackbacks/430982.html

youngturk 2016-06-21 21:37 发表评论
]]>
jquery中ajax处理跨域的三大方?QjQuery学习(fn)之jQuery Ajax用法详解http://www.aygfsteel.com/youngturk/archive/2016/06/20/430977.htmlyoungturkyoungturkMon, 20 Jun 2016 15:10:00 GMThttp://www.aygfsteel.com/youngturk/archive/2016/06/20/430977.htmlhttp://www.aygfsteel.com/youngturk/comments/430977.htmlhttp://www.aygfsteel.com/youngturk/archive/2016/06/20/430977.html#Feedback0http://www.aygfsteel.com/youngturk/comments/commentRss/430977.htmlhttp://www.aygfsteel.com/youngturk/services/trackbacks/430977.html

youngturk 2016-06-20 23:10 发表评论
]]>
我的理解--关于jmx http://www.aygfsteel.com/youngturk/archive/2016/06/20/430971.htmlyoungturkyoungturkMon, 20 Jun 2016 01:40:00 GMThttp://www.aygfsteel.com/youngturk/archive/2016/06/20/430971.htmlhttp://www.aygfsteel.com/youngturk/comments/430971.htmlhttp://www.aygfsteel.com/youngturk/archive/2016/06/20/430971.html#Feedback0http://www.aygfsteel.com/youngturk/comments/commentRss/430971.htmlhttp://www.aygfsteel.com/youngturk/services/trackbacks/430971.html
http://www.cnblogs.com/Javame/p/3881187.html
JMX Java Management ExtensionsQJava理扩展Q初步看了些资料Q以为是专门理Q监控jvm的一些信息的Q特别是visual VMq个监控jvm的东西,q有一个添加JMXq接的时候(我自己想错了Q那L(fng)话应该叫jvm Management ExtensionsQ,其实他能使得Zjava语言开发的E序能被理Qƈ且是可扩展的? Jdk以前是通过JVMPI之类来监JavaE序q行中的jvm和系l的一pd情况Q现在通过jmx可以做刎ͼq是通过java.lang.management 包来实现的,q个包是 JMX ?JDK斚w 的一个应用,q不是表Cjmx是一个监控jvm的东ѝ? 我们可以用jmx来监控我们的pȝQ通过公布API的方式,但是Q这里采用监控这个词Q也是受了前面的例子的媄(jing)响,实际上,个h觉得Q就可以用jmx来开发我们的pȝ? 现在的jbossQhibernateQtomcat各种应用都号U实CJMX规范Q将可管理,可调用的MBean注册到MBeanServer中,通过一U类?#8220;web服务”的方式公布出去,q且伴有一个名字,可以通过该名字找到该MBean。ƈ且,q里的MBean是可以被理的,说到q里又想COSGI? JMX与Web Service 个h认ؓ(f)Q我们实现JMX规范Q将东西发布出去Q和通过web Service的方式是很类似的Q也是可以远E调用的Q只是相对的web Service的方式更加SOA一些,不过JMXL(fng)也要提供寚wjava客户端的支持Q也是跨语a了吧。。? 现在的JMXq接方式Q? JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/server"); JMXConnector jmxc = JMXConnectorFactory.connect(url, null); 看了下源码,貌似q是通过RMI来实现的Q不知道它要怎么实现非java客户端支持? 从这里,我觉得JMX可以实现的,我们也都可以通过web Service实现Q只是看在它有个“M”上,以后如果有什么系l管理,监控斚w的,可以考虑使用它,也许开发,个h觉得q是使用web service好一些? 说到q里Q感觉OSGI与JMX也好像,在看到JMX能够对MBeanq行理的时候,我就觉得跟OSGI很像QOSGI理的是BundleQ找了找资源Q原来早有虑q了Q? http://teamojiao.iteye.com/blog/438334 ZQ在查资料的时候,发现一个东西, if your question means, how to manage an OSGi runtime with JMX, you should have a look at MAEXO (http://code.google.com/p/maexo/). With MAEXO bundles up and running you will transparently get MBeans for a fair amount of services of the OSGi runtime as well as MBeans for your own services and bundles. Just have a look at the screencast. 摘一些话Q仅做参? <|友回复> 一个大pȝ中,各内部模块系l之间的Z接口方式的互相调用和ȝQ用jmx是最x案. 带来的好处是 1.面向接口Q远E调用对于开发h员是透明的,模块在调用jmx接口Ӟ与调用本地方法几乎相同. 2.可视化的ȝ界面Q 通过 Jconsole{jmx客户端,可以实时监控pȝQƈ且可实时调用Ҏ(gu)q行某些操作Q? 典型应用场景Q  某聊天系l,一台服务器作ؓ(f) 在线用户列表服务?A1Q n台服务器ؓ(f)用户提供聊天业务处理 N1 ,N2,N3...Q? 一台服务器作ؓ(f)后台ȝpȝA2Q  pȝȝ员现在进行下面这样一个操作,察看某用h否在U,扑ֈ该用P发现其在U,则将该用户加入黑名单Qƈt下U. 对应的jmx接口可以׃下几个:(x)  A1为A2提供查询在线用户jmx接口,加入黑名单接口,kickout接口Q? Q1为N1..{服务器提供以下接口Q 注册业务服务器,d在线用户Q查N名单用户 N1...到N3为AQ提供kickout接口Q? 因此在上面的t下U操作,则由用户在A2的web界面发出Q交由A1执行QA1记录黑名单之后,再找到用h在业务服务器调用N1提供的接口让用户下线Q? 以上情Ş是在生环境下的部vQ而在开发工作,则可以将A1,A2,N...N3{功能合q在一个应用中调试Q ׃使用的是jmx接口,在本地调试合q之后,可以直接调用应用内部接口Ҏ(gu)Q? q样借助jmx实现的应用模块的灵zȝ装与拆分Q得系l的可以Ҏ(gu)负蝲需要,Ҏ(gu)性能情况Q灵zȝ拆分和整合部|分布式的应用. 替代Ҏ(gu)Q选择webservice,xmlrpc{,但是q些都需要手工编写或用工L(fng)成大量的代码来辅助完成接口间的java对象序列化 ? l典jmx案例:(x) Q.Qboss.使用jmx治理内部的各个service? 2Q Zjava的开源网Y?Hyperic HQ Q通过jmx与各被ȝ资源q行通讯和信息采集. <|友回复>JMX是一个治理的框架? 当我们想使用JMX的时候,p问,我们的系l当中有需要监控治理的资源或者对象吗Q实事求是一点,我们不能Z想用一个高端的技术,歪曲系l的本来面目? 假如W一个问题是肯定的,接下来就是看q些资源是否有生命周期? l典案例Qjboss是所有可部v的组件作源来ȝQ这些组建都有其生命周期。这个理는臛_g伸到了其pȝ内部Q将其内部的服务作ؓ(f)lgU_?JMX中来Q成׃jbossZjmx的微内核pȝ?img src ="http://www.aygfsteel.com/youngturk/aggbug/430971.html" width = "1" height = "1" />

youngturk 2016-06-20 09:40 发表评论
]]>
java socket~程 http://www.aygfsteel.com/youngturk/archive/2016/06/19/430970.htmlyoungturkyoungturkSun, 19 Jun 2016 14:20:00 GMThttp://www.aygfsteel.com/youngturk/archive/2016/06/19/430970.htmlhttp://www.aygfsteel.com/youngturk/comments/430970.htmlhttp://www.aygfsteel.com/youngturk/archive/2016/06/19/430970.html#Feedback0http://www.aygfsteel.com/youngturk/comments/commentRss/430970.htmlhttp://www.aygfsteel.com/youngturk/services/trackbacks/430970.htmlhttp://www.ibm.com/developerworks/cn/linux/l-cn-socketftp/一Q网l编E中两个主要的问?/span>

一个是如何准确的定位网l上一台或多台LQ另一个就是找C机后如何可靠高效的进行数据传输?br />
在TCP/IP协议中IP层主要负责网l主机的定位Q数据传输的路由Q由IP地址可以唯一地确定Internet上的一C机?br />
而TCP层则提供面向应用的可靠(tcpQ的或非可靠QUDPQ的数据传输机制Q这是网l编E的主要对象Q一般不需要关心IP层是如何处理数据的?br />
目前较ؓ(f)行的网l编E模型是客户?服务器(C/SQ结构。即通信双方一方作为服务器{待客户提出hq予以响应。客户则在需要服务时向服务器?nbsp;出申诗服务器一般作为守护进E始l运行,监听|络端口Q一旦有客户hQ就?x)启动一个服务进E来响应该客P同时自己l箋监听服务端口Q后来的客户也 能及(qing)时得到服务?br />
二,两类传输协议QTCPQUDP

TCP是Tranfer Control Protocol?nbsp;Uͼ是一U面向连接的保证可靠传输的协议。通过TCP协议传输Q得到的是一个顺序的无差错的数据。发送方和接收方的成对的两个socket之间必须?nbsp;立连接,以便在TCP协议的基上进行通信Q当一个socketQ通常都是server socketQ等待徏立连接时Q另一个socket可以要求q行q接Q一旦这两个socketq接hQ它们就可以q行双向数据传输Q双斚w可以q行发?nbsp;或接收操作?br />
UDP是User Datagram Protocol的简Uͼ是一U无q接的协议,每个数据报都是一个独立的信息Q包括完整的源地址或目的地址Q它在网l上以Q何可能的路径传往目的圎ͼ因此能否到达目的圎ͼ到达目的地的旉以及(qing)内容的正性都是不能被保证的?br />
比较Q?br />
UDPQ?Q每个数据报中都l出了完整的地址信息Q因此无需要徏立发送方和接收方的连接?br />
            2QUDP传输数据时是有大限制的Q每个被传输的数据报必须限定?4KB之内?br />
           3QUDP是一个不可靠的协议,发送方所发送的数据报ƈ不一定以相同的次序到达接收方

TCPQ?Q面向连接的协议Q在socket之间q行数据传输之前必然要徏立连接,所以在TCP中需要连?br />
                旉?br />
            2QTCP传输数据大小限制Q一旦连接徏立v来,双方的socket可以按l一的格式传输大?nbsp; 

                    数据?br />
             3QTCP是一个可靠的协议Q它保接收方完全正地获取发送方所发送的全部数据?br />
应用Q?br />
1QTCP在网l通信上有极强的生命力Q例如远E连接(TelnetQ和文g传输QF(tun)TPQ都需要不定长度的数据被可靠地传输。但是可靠的传输是要付出代h(hun)的,Ҏ(gu)据内Ҏ(gu)性的(g)验必然占用计机的处理时间和|络的带宽,因此TCP传输的效率不如UDP高?br />
2QUDP操作单,而且仅需要较?yu)的监护Q因此通常用于局域网高可靠性的分散pȝ中client/server应用E序。例如视频会(x)议系l,q不要求音频视频数据l对的正,只要保证q诏性就可以了,q种情况下显然用UDP?x)更合理一些?br />
三,ZSocket的java|络~程

1Q什么是Socket

|络上的两个E序通过一个双向的通讯q接实现数据的交换,q个双向链\的一端称Z个Socket。Socket通常用来实现客户方和服务方的q接。Socket是TCP/IP协议的一个十分流行的~程界面Q一个Socket׃个IP地址和一个端口号唯一定?br />
但是QSocket所支持的协议种cM不光TCP/IP一U,因此两者之间是没有必然联系的。在Java环境下,Socket~程主要是指ZTCP/IP协议的网l编E?br />
2QSocket通讯的过E?br />
Server端Listen(监听)某个端口是否有连接请求,Client端向Server 端发出Connect(q接)hQServer端向Client端发回AcceptQ接受)消息。一个连接就建立h了。Server端和Client 端都可以通过SendQW(xu)rite{方法与Ҏ(gu)通信?br />
对于一个功能齐全的SocketQ都要包含以下基本结构,其工作过E包含以下四个基本的步骤Q?br />
  Q?Q?nbsp;创徏SocketQ?br />
  Q?Q?nbsp;打开q接到Socket的输?出流Q?br />
  Q?Q?nbsp;按照一定的协议对Socketq行?写操作;

  Q?Q?nbsp;关闭Socket.Q在实际应用中,q未使用到显C的closeQ虽然很多文章都推荐如此Q不q在我的E序中,可能因ؓ(f)E序本n比较单,要求不高Q所以ƈ未造成什么媄(jing)响。)

3Q创建Socket

创徏Socket

java在包java.net中提供了两个cSocket和ServerSocketQ分别用来表C双向连接的客户端和服务端。这是两个封装得非常好的c,使用很方ѝ其构造方法如下:(x)

  Socket(InetAddress address, int port);

  Socket(InetAddress address, int port, boolean stream);

  Socket(String host, int prot);

  Socket(String host, int prot, boolean stream);

  Socket(SocketImpl impl)

  Socket(String host, int port, InetAddress localAddr, int localPort)

  Socket(InetAddress address, int port, InetAddress localAddr, int localPort)

  ServerSocket(int port);

  ServerSocket(int port, int backlog);

  ServerSocket(int port, int backlog, InetAddress bindAddr)

  其中address、host和port分别是双向连接中另一方的IP地址、主机名和端 口号Qstream指明socket是流socketq是数据报socketQlocalPort表示本地L的端口号QlocalAddr?nbsp;bindAddr是本地机器的地址QServerSocket的主机地址Q,impl是socket的父c,既可以用来创建serverSocket又可 以用来创建Socket。count则表C服务端所能支持的最大连接数。例如:(x)学习(fn)视频|?nbsp;http://www.xxspw.com

  Socket client = new Socket("127.0.01.", 80);

  ServerSocket server = new ServerSocket(80);

  注意Q在选择端口Ӟ必须心。每一个端口提供一U特定的服务Q只有给出正的端口Q才 能获得相应的服务?~1023的端口号为系l所保留Q例如http服务的端口号?0,telnet服务的端口号?1,ftp服务的端口号?3, 所以我们在选择端口hQ最好选择一个大?023的数以防止发生冲H?br />
  在创建socket时如果发生错误,生IOExceptionQ在E序中必d之作出处理。所以在创徏Socket或ServerSocket是必Lh抛出例外?br />
4Q简单的Client/ServerE序

1. 客户端程?br />
  import java.io.*;

  import java.net.*;

  public class TalkClient {

    public static void main(String args[]) {

      try{

        Socket socket=new Socket("127.0.0.1",4700);

        //向本机的4700端口发出客户h

        BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));

        //ql标准输入设备构造BufferedReader对象

        PrintWriter os=new PrintWriter(socket.getOutputStream());

        //由Socket对象得到输出,q构造PrintWriter对象

        BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));

        //由Socket对象得到输入,q构造相应的BufferedReader对象

        String readline;

        readline=sin.readLine(); //从系l标准输入读入一字符?/span>

        while(!readline.equals("bye")){

        //若从标准输入d的字W串?nbsp;"bye"则停止@?/span>

          os.println(readline);

          //从pȝ标准输入d的字W串输出到Server

          os.flush();

          //h输出,使Server马上收到该字W串

          System.out.println("Client:"+readline);

          //在系l标准输Z打印d的字W串

          System.out.println("Server:"+is.readLine());

          //从Serverd一字符Ԍq打印到标准输出?/span>

          readline=sin.readLine(); //从系l标准输入读入一字符?/span>

        } //l箋循环

        os.close(); //关闭Socket输出?/span>

        is.close(); //关闭Socket输入?/span>

        socket.close(); //关闭Socket

      }catch(Exception e) {

        System.out.println("Error"+e); //出错Q则打印出错信息

      }

  }

}

 2. 服务器端E序

  import java.io.*;

  import java.net.*;

  import java.applet.Applet;

  public class TalkServer{

    public static void main(String args[]) {

      try{

        ServerSocket server=null;

        try{

          server=new ServerSocket(4700);

        //创徏一个ServerSocket在端?700监听客户h

        }catch(Exception e) {

          System.out.println("can not listen to:"+e);

        //出错Q打印出错信?/span>

        }

        Socket socket=null;

        try{

          socket=server.accept();

          //使用accept()d{待客户hQ有客户

          
//h到来则生一个Socket对象Qƈl箋执行

        }catch(Exception e) {

          System.out.println("Error."+e);

          //出错Q打印出错信?/span>

        }

        String line;

        BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));

         //由Socket对象得到输入,q构造相应的BufferedReader对象

        PrintWriter os=newPrintWriter(socket.getOutputStream());

         //由Socket对象得到输出,q构造PrintWriter对象

        BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));

         //ql标准输入设备构造BufferedReader对象

        System.out.println("Client:"+is.readLine());

        //在标准输Z打印从客L(fng)d的字W串

        line=sin.readLine();

        //从标准输入读入一字符?/span>

        while(!line.equals("bye")){

        //如果该字W串?nbsp;"bye"Q则停止循环

          os.println(line);

          //向客L(fng)输出该字W串

          os.flush();

          //h输出,使Client马上收到该字W串

          System.out.println("Server:"+line);

          //在系l标准输Z打印d的字W串

          System.out.println("Client:"+is.readLine());

          //从Clientd一字符Ԍq打印到标准输出?/span>

          line=sin.readLine();

          //从系l标准输入读入一字符?/span>

        }  //l箋循环

        os.close(); //关闭Socket输出?/span>

        is.close(); //关闭Socket输入?/span>

        socket.close(); //关闭Socket

        server.close(); //关闭ServerSocket

      }catch(Exception e){

        System.out.println("Error:"+e);

        //出错Q打印出错信?/span>

      }

    }

  }

5Q支持多客户的client/serverE序

前面的Client/ServerE序只能实现Server和一个客L(fng)对话。在实际应用 中,往往是在服务器上q行一个永久的E序Q它可以接收来自其他多个客户端的hQ提供相应的服务。ؓ(f)了实现在服务器方l多个客h供服务的功能Q需要对?nbsp;面的E序q行攚w,利用多线E实现多客户机制。服务器L在指定的端口上监听是否有客户hQ一旦监听到客户hQ服务器׃(x)启动一个专门的服务U程来响 应该客户的请求,而服务器本n在启动完U程之后马上又进入监听状态,{待下一个客L(fng)到来?/div>

youngturk 2016-06-19 22:20 发表评论
]]>java 环境变量配置http://www.aygfsteel.com/youngturk/archive/2016/06/19/430969.htmlyoungturkyoungturkSun, 19 Jun 2016 14:18:00 GMThttp://www.aygfsteel.com/youngturk/archive/2016/06/19/430969.htmlhttp://www.aygfsteel.com/youngturk/comments/430969.htmlhttp://www.aygfsteel.com/youngturk/archive/2016/06/19/430969.html#Feedback0http://www.aygfsteel.com/youngturk/comments/commentRss/430969.htmlhttp://www.aygfsteel.com/youngturk/services/trackbacks/430969.html

youngturk 2016-06-19 22:18 发表评论
]]>
JVM介绍 http://www.aygfsteel.com/youngturk/archive/2016/06/19/430968.htmlyoungturkyoungturkSun, 19 Jun 2016 14:11:00 GMThttp://www.aygfsteel.com/youngturk/archive/2016/06/19/430968.htmlhttp://www.aygfsteel.com/youngturk/comments/430968.htmlhttp://www.aygfsteel.com/youngturk/archive/2016/06/19/430968.html#Feedback0http://www.aygfsteel.com/youngturk/comments/commentRss/430968.htmlhttp://www.aygfsteel.com/youngturk/services/trackbacks/430968.html

youngturk 2016-06-19 22:11 发表评论
]]>
关于Tomcat 6的热部v和热加蝲 ?/title><link>http://www.aygfsteel.com/youngturk/archive/2016/06/19/430967.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Sun, 19 Jun 2016 13:03:00 GMT</pubDate><guid>http://www.aygfsteel.com/youngturk/archive/2016/06/19/430967.html</guid><wfw:comment>http://www.aygfsteel.com/youngturk/comments/430967.html</wfw:comment><comments>http://www.aygfsteel.com/youngturk/archive/2016/06/19/430967.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/youngturk/comments/commentRss/430967.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/youngturk/services/trackbacks/430967.html</trackback:ping><description><![CDATA[http://greemranqq.iteye.com/blog/1774258 <br /><div>http://www.cnblogs.com/-lpf/p/4317281.html</div><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;">我在目开发过E中Q经常要改动JAVA/JSP 文gQ但是又不想从新启动服务?服务器从新启动花旉)Q想直接获得QdebugQ结?有两U方式热部v 和热加蝲Q?/span><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;"> </p><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;">1.热加载:(x)在server.xml -> context 属性中 讄 reloadable="true"</p><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;"> </p><div class="wmqeeuq" id="" style="font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; width: 679px; margin-left: 9px; padding-right: 1px; padding-bottom: 1px; padding-left: 1px; word-break: break-all; word-wrap: break-word; line-height: 25.2000007629395px; background-color: #ffffff;"><div><div style="padding-right: 3px; padding-bottom: 3px; padding-left: 3px; margin: 0px; font-weight: bold;">Java代码  <a title="收藏q段代码" style="color: #108ac6; text-decoration: underline;"><img src="http://greemranqq.iteye.com/images/icon_star.png" alt="收藏代码" style="border: 0px;" /></a></div></div><ol start="1" style="font-size: 1em; line-height: 1.4em; margin-left: 0px; padding-top: 2px; padding-bottom: 2px; border: 1px solid #d1d7dc; color: #2b91af;"><li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; line-height: 18px; background-color: #fafafa;"><Context docBase="xxx" path="/xxx" reloadable="true"/>  </li></ol></div><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;">    </p><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;"> </p><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;">2. 热部|Ԍ(x)在server.xml -> context 属性中 讄  autoDeploy="true"</p><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;">  </p><div class="wmqeeuq" id="" style="font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; width: 679px; margin-left: 9px; padding-right: 1px; padding-bottom: 1px; padding-left: 1px; word-break: break-all; word-wrap: break-word; line-height: 25.2000007629395px; background-color: #ffffff;"><div><div style="padding-right: 3px; padding-bottom: 3px; padding-left: 3px; margin: 0px; font-weight: bold;">Java代码  <a title="收藏q段代码" style="color: #108ac6; text-decoration: underline;"><img src="http://greemranqq.iteye.com/images/icon_star.png" alt="收藏代码" style="border: 0px;" /></a></div></div><ol start="1" style="font-size: 1em; line-height: 1.4em; margin-left: 0px; padding-top: 2px; padding-bottom: 2px; border: 1px solid #d1d7dc; color: #2b91af;"><li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; line-height: 18px; background-color: #fafafa;"><Context docBase="xxx" path="/xxx" autoDeploy="true"/>  </li></ol></div><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;"> </p><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;">3.区别Q?/p><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;">      热加载:(x)服务器会(x)监听 class 文g改变Q局部进行加载,不清Isession Q不释放内存。开发中用的多,但是要考虑内存溢出的情c(din)?/p><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;"> </p><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;">      热部|Ԍ(x) 整个目从新部vQ包括你从新打上<strong>.war 文g??x)清Isession Q释攑ֆ存。项目打包的时候用的多?/strong></p><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;"> </p><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;"></p><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;">也可以通过Eclipse上设|实Cq配|文件的修改 </p><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;"></p><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;">Eclipse的工E名右键: properties->Tomcat->General->Make this context as reloadable(reloadable="true")不要选中 Eclipse的工E名右键:Tomcat project->Update Context Definition</p><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;"></p><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;"> </p><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;"></p><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;">注意:source 属性有些版本不支持Q容易出错,Lp <br /><br />二?br /></p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; line-height: 19.5px; font-size: 13px; font-family: Verdana, Arial, Helvetica, sans-serif; background-color: #fefef2;">不重启Tomcat有两U方式:(x)热部|Ӏ热加蝲 <br style="margin: 0px; padding: 0px;" />  热部|Ԍ(x)容器状况在运行时重新部v整个目。这cȝ境下一般整个内存会(x)清空,重新加蝲Q这cL?nbsp;<br style="margin: 0px; padding: 0px;" />  有可能会(x)造成sessin丢失{环境。tomcat 6实可以热部|了,而且对话也没? <br style="margin: 0px; padding: 0px;" />  热加载:(x)最好是在调试过E中使用Q免(zhn)上整个目加蝲,Debug标准样式支持热加载。容器状况在q行旉 <br style="margin: 0px; padding: 0px;" />  新加载{变编译后的类。在q类环境下内存不?x)清I?sessin不会(x)丢失,但容易造成内存溢出,或者找不到?nbsp;<br style="margin: 0px; padding: 0px;" />  法。一般{变类的布局和模型就?x)有异常Q在已经有的变量和方法中转变是不?x)出问题?Eclipse?nbsp;<br style="margin: 0px; padding: 0px;" />  MyEclipse8、JBuilder、IntelliJ IDEA…)?nbsp;<br style="margin: 0px; padding: 0px;" />  常用的一定第二种Q热加蝲了,讄如下Q?nbsp;<br style="margin: 0px; padding: 0px;" />  在tomcat的conf中的server.xml中的host讄中添?lt;Context path="/test" <br style="margin: 0px; padding: 0px;" />  docBase="D:/develop/test" <br style="margin: 0px; padding: 0px;" />  debug="0" privileged="true" reloadable="true"/> <br style="margin: 0px; padding: 0px;" />  reloadable="true" !最重要 <br style="margin: 0px; padding: 0px;" />  它内里有很多属?意义如下Q?nbsp;<br style="margin: 0px; padding: 0px;" />  1>path:指定拜候该web应用的URLq口Q?nbsp;<br style="margin: 0px; padding: 0px;" />  2>docBase:指定web应用的文件\径,可以l定l对路径Q也可以l定相对?lt;Host>的appBase属性【默?nbsp;<br style="margin: 0px; padding: 0px;" />  指向tomcat的webapps】的相对于径Q要是Web应用是个war文gQ则指定war文g的\径?nbsp;<br style="margin: 0px; padding: 0px;" />  3>className:指定使成Z实Contextlg的Javacȝ名字Q这个JavacdM成ؓ(f)事实org.apache.catalina.Context <br style="margin: 0px; padding: 0px;" />  接口Q该属性的默认gؓ(f)org.apache.catalina.StandardContext?nbsp;<br style="margin: 0px; padding: 0px;" />  4>reloadable:要是q个属性设|ؓ(f)true,Tomcat服务器在q行状况下会(x)监视在WEB-INF/classess和W(xu)EB- <br style="margin: 0px; padding: 0px;" />  INF/lib目次下的class文g的改动,以及(qing)监视web应用的WEB-INF/web.xml文g的改动。要是检到的class <br style="margin: 0px; padding: 0px;" />  文g或者web.xml文g被更斎ͼ服务器会(x)自动加蝲Web应用。该属性的默认gؓ(f)false.在web应用的开发和?nbsp;<br style="margin: 0px; padding: 0px;" />  试阶D,把reloadable设ؓ(f)true,可以方便对web应用的调试。在web应用正式发布阶段Q把reloadable设ؓ(f) <br style="margin: 0px; padding: 0px;" />  false,可以减低tomcat的运行负P提高Tomcat的运行性能?nbsp;<br style="margin: 0px; padding: 0px;" />  5>cachingAllowed:要是为true,标示允许启用静态资源的~存。用缓存能提高拜候静态资源的效率?nbsp;<br style="margin: 0px; padding: 0px;" />  tomcat把那一些时常被客户端拜候的静态资??HTML文档、图片文件和声响文g{?攑֜~存中,当客户再 <br style="margin: 0px; padding: 0px;" />  ơ拜候有关静态资源时QTomcat只需直接从缓存中d相关数据Q无d复读取文件系l中的文件。该?nbsp;<br style="margin: 0px; padding: 0px;" />  性的默认gؓ(f)true. <br style="margin: 0px; padding: 0px;" />  6>cacheMaxSize:讑֮静态资源的~存的最大容量,以K为单元。要是,要是该属性ؓ(f)100,表示100KQ默?nbsp;<br style="margin: 0px; padding: 0px;" />  ?0240(?0M)?nbsp;<br style="margin: 0px; padding: 0px;" />  7>workDir:指定web应用的工作目ơ。Tomcat在运行时?x)把与这个web应用相关的(f)应试文章件放在此目次下?nbsp;<br style="margin: 0px; padding: 0px;" />  8>uppackWar:要是此项设ؓ(f)true,表示把web应用的war文g睁开为开攄ơ布局后再q行。要是设?nbsp;<br style="margin: 0px; padding: 0px;" />  false,则直接运行war文g。该属性的默认gؓ(f)true?nbsp;<br style="margin: 0px; padding: 0px;" />  同志们,使用tomcat6.0的注意了啊。当你用我的方法设|tomcat后,你的myeclipse报如下错误时Q不要惊慌,q是正确的,且听我解释?nbsp;<br style="margin: 0px; padding: 0px;" />  console报错Q?nbsp;<br style="margin: 0px; padding: 0px;" />  警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ' debug' to '0' did not find a matching property. q是׃你用的是tomcat6.0,׃它\E经q过E其他途径对debug="0"q个属性进行了使成Z实,所以这搭不能再有此属性。你只要它LQ就能够没事了启动了?也就是说Ldebug="0“Q万事OKQ呵c(din)?nbsp;</p><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2000007629395px; background-color: #ffffff;"><br /></p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; line-height: 19.5px; font-size: 13px; font-family: Verdana, Arial, Helvetica, sans-serif; background-color: #fefef2;">(?</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; line-height: 19.5px; font-size: 13px; font-family: Verdana, Arial, Helvetica, sans-serif; background-color: #fefef2;">-------------------------------------------------------------</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; line-height: 19.5px; font-size: 13px; font-family: Verdana, Arial, Helvetica, sans-serif; background-color: #fefef2;">针对需要重新启动tomcat的服?重新启动方式?</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; line-height: 19.5px; font-size: 13px; font-family: Verdana, Arial, Helvetica, sans-serif; background-color: #fefef2;">安装?tomcat/bin/shotdown.bat      关闭tomcat服务</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; line-height: 19.5px; font-size: 13px; font-family: Verdana, Arial, Helvetica, sans-serif; background-color: #fefef2;">          tomcat/bin/startup.bat         开启tomcat服务</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; line-height: 19.5px; font-size: 13px; font-family: Verdana, Arial, Helvetica, sans-serif; background-color: #fefef2;">或?->我的?sh)?->理-->服务和应用程?服务-->扑ֈApache Tomcat重启</p><img src ="http://www.aygfsteel.com/youngturk/aggbug/430967.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/youngturk/" target="_blank">youngturk</a> 2016-06-19 21:03 <a href="http://www.aygfsteel.com/youngturk/archive/2016/06/19/430967.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>apache tomcat mod_js配置整合Q?/title><link>http://www.aygfsteel.com/youngturk/archive/2016/06/19/430963.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Sun, 19 Jun 2016 12:42:00 GMT</pubDate><guid>http://www.aygfsteel.com/youngturk/archive/2016/06/19/430963.html</guid><wfw:comment>http://www.aygfsteel.com/youngturk/comments/430963.html</wfw:comment><comments>http://www.aygfsteel.com/youngturk/archive/2016/06/19/430963.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/youngturk/comments/commentRss/430963.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/youngturk/services/trackbacks/430963.html</trackback:ping><description><![CDATA[http://blog.sina.com.cn/s/blog_3c9872d00102w00y.html<br /><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;"><span style="word-wrap: normal; word-break: normal; line-height: 19.5px; font-size: 13px; background-color: #ffffff;">Apache与Tomcat整合应用是一个老话题,不算新技能,但对非运lh员在配置q程中或怹?x)遇C些问题。这里只是把自己多回配置的过E做一个摘录,供自q阅ƈ望对q\的h有用?/span></div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;"><span style="word-wrap: normal; word-break: normal; line-height: 19.5px; font-size: 13px; background-color: #ffffff;">Apache是当下在Windows、Unix、Linux {操作系l中最行的Web服务器Y件之一Q其反应速度快、运行效率高Q不仅支持HTML{静态页面,在加载插件后也可支持 PHP 面{。Tomcat是Apache软g基金协会(x)与Sun公司联合开发的Web服务器,除支持HTML静态页面外Q还是JSP、Servlet{JAVA WEB应用的服务器。在相同q行环境下,Tomcat寚w态页面的反应速度没有Apache灉|Q整?Apache与Tomcat能ɾpȝq行于一个良好环境下Q实现JAVA的动态与静态页面分,不仅让系l更安全Q同时也可提高系l效率?/span></div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;"><span style="word-wrap: normal; word-break: normal; line-height: 19.5px; font-size: 13px; background-color: #ffffff;"><br /></span></div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;"><span style="word-wrap: normal; word-break: normal; line-height: 19.5px; background-color: #ffffff;"><strong>一、JAVA应用基础架构</strong></span></div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;"><span style="word-wrap: normal; word-break: normal; line-height: 19.5px; font-size: 13px; text-indent: 2em; background-color: #ffffff;"><br /></span></div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;"><span style="word-wrap: normal; word-break: normal; line-height: 19.5px; font-size: 13px; text-indent: 2em; background-color: #ffffff;">通用的JAVA应用架构如下Q包括WEB Server、APP Server和DB Server三个部分Q?/span></div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;"><div><a target="_blank" style="text-decoration: none; color: #074387;"><img src="http://s5.sinaimg.cn/mw690/0016NEiszy6U3Trv2io14&690" real_src="http://s5.sinaimg.cn/mw690/0016NEiszy6U3Trv2io14&690" name="image_operate_89061437641576399" alt="Apache和Tomcat整合配置实现JAVA应用?#8220;动静”分离" title="Apache和Tomcat整合配置实现JAVA应用?#8220;动静”分离" action-data="http%3A%2F%2Fs5.sinaimg.cn%2Fmw690%2F0016NEiszy6U3Trv2io14%26690" action-type="show-slide" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a></div><div><strong>1、WEB Server</strong></div><div><div>WEB Server|于企业防火墙外Q这个防火墙也可以认为是一个CISCO路由器,在CISCO路由器上开放两个端口ؓ(f)Q?0?43Q其中:(x)</div><div>80端口Q用于正常的http讉K</div><div>443端口Q用于https讉KQ即如果你在ie里打入https://xxx.xxx.xxq样的地址Q默认走的是443q个端口</div><div>WebServer专门用于解析HTML、JSQJavaScriptQ、CSS、JPG/GIF{图片格式文件、TXT、VBSCRIPT、PHP{?#8220;静?#8221;|页内容?/div><div><strong>2、APP Server</strong></div><div><div>APP Server|于企业防火墙内Q它和W(xu)eb Server之间的连接必M一定ؓ(f)内部IPq接。App Server用于解析我们的Q何需要Java~译器才能解析的“动?#8221;|页Q其实App Server本n也能解析M静态网늚。在应用中我们这h想一下:(x)我们让负责专门解析静态网늚Web Server来解析html{内容,而让App Server专门用于解析M需要Java~译器才能解析的东西Q让它们各司其职。这样作的好处:(x)</div><div> <wbr> 1Qؓ(f)App Server“减压”Q同时也提高了性能Q?/div><div> <wbr> 2Q不用再?080q个端口暴露在internet上,也很安全Q毕竟我们的App Server上是有我们的代码的,q是编译过的代码也Ҏ(gu)?#8220;反编?#8221;Q这是很不安全的Q?/div><div> <wbr> 3Qؓ(f)来q一步的“集群扩展”打好了基?/div></div><div><strong>3、DB Server</strong></div><div> <wbr>比方说我们用MySQLQ它需要通过3306与App Serverq行q接Q那么这?521我们UCؓ(f)数据库连接端口,如果把它暴露在Internet上就比较危险Q就密码很复杂Q但 对于高明的黑客来_(d)要攻破你的口令也只是旉上的问题而己。因此我们把我们的DB Server也和App Server一P|于内网的防火墙QQ何的DBq接与管理只能通过内网来访问?/div><div></div><div><strong>二、系l安装与配置</strong></div><div></div><div>pȝ安装包括MySQL的安装,W(xu)EB Server即Apache的安装,App Server即Tomcat的安装。关于这三个pȝ安装|上相关的文档很多,此处略去。以下主要摘录需要重炚w|的内容?/div><div><strong>1、Apache的配|?/strong></div><div>做技术的人应该都?x)Apache的基配置Q如果不?x)确实需要学一学?/div><div><span style="word-wrap: normal; word-break: normal; line-height: 22.5px; color: #333333; font-family: 'Microsoft YaHei', Verdana, sans-serif, 宋体; font-size: 12.5px; letter-spacing: 0.5px; text-indent: 0px; background-color: #ffffff;">Apache的配|主要集中在</span><strong style="padding: 0px; margin: 0px; color: #333333; font-family: 'Microsoft YaHei', Verdana, sans-serif, 宋体; font-size: 12.5px; letter-spacing: 0.5px; line-height: 22.5px; text-indent: 0px; background-color: #ffffff;"><span style="word-wrap: normal; word-break: normal; line-height: 18.75px; padding: 0px; margin: 0px; color: red;">httpd.conf</span></strong><span style="word-wrap: normal; word-break: normal; line-height: 22.5px; color: #333333; font-family: 'Microsoft YaHei', Verdana, sans-serif, 宋体; font-size: 12.5px; letter-spacing: 0.5px; text-indent: 0px; background-color: #ffffff;">文g中,它位于Apache的安装目录下Q比如我的是?#8220;</span><span style="word-wrap: normal; word-break: normal; line-height: 22.5px; text-indent: 2em; font-size: 12.5px; letter-spacing: 0.5px;">C:\webserver\apache\apache22\conf</span><span style="word-wrap: normal; word-break: normal; line-height: 22.5px; color: #333333; font-family: 'Microsoft YaHei', Verdana, sans-serif, 宋体; font-size: 12.5px; letter-spacing: 0.5px; text-indent: 0px; background-color: #ffffff;">”目录下。用U</span><span style="word-wrap: normal; word-break: normal; line-height: 22.5px; color: #333333; font-family: 'Microsoft YaHei', Verdana, sans-serif, 宋体; font-size: 12.5px; letter-spacing: 0.5px; text-indent: 0px; background-color: #ffffff;">ltraedit或Notepad++~辑器打开文gQ通常需要修改的内容包括ServerName?/span><span style="word-wrap: normal; word-break: normal; line-height: 22.5px; text-indent: 2em; font-size: 12.5px; letter-spacing: 0.5px;">DocumentRoot、VirtualHost内容{。此处我修改的内容包括:(x)</span></div><div><span style="word-wrap: normal; word-break: normal; line-height: 22.5px; text-indent: 2em; font-size: 12.5px; letter-spacing: 0.5px;">1QDocumentRoot原目录ؓ(f)</span><span style="word-wrap: normal; word-break: normal; line-height: 22.5px; text-indent: 2em; font-size: 12.5px; letter-spacing: 0.5px;">C:/webserver/apache/apache22/htdocsQ修改ؓ(f)</span><span style="word-wrap: normal; word-break: normal; line-height: 22.5px; text-indent: 2em; font-size: 12.5px; letter-spacing: 0.5px;">D:/WWW/apache/htdocsQ将|站发布路径与Apache安装路径分开Q?/span></div><div><div style="color: #333333;"><span style="word-wrap: normal; word-break: normal; line-height: 18.75px; text-indent: 2em; font-size: 12.5px; letter-spacing: 0.5px;">2Q找到如下红色标C内容:(x)</span></div><div style="color: #333333;"></div><div style="color: #333333;"> <wbr>  <wbr> Options FollowSymLinks</div><div style="color: #333333;"> <wbr>  <wbr> AllowOverride None</div><div> <wbr>  <wbr> Order deny,allow</div><div style="color: #333333;"> <wbr>  <wbr> deny from all</div><div style="color: #333333;"></div><div style="color: #333333;">把这?#8221;deny from all”Ҏ(gu)”allow fromall’?/div><div style="color: #333333;"></div><div style="color: #333333;"> <wbr>  <wbr> Options FollowSymLinks</div><div style="color: #333333;"> <wbr>  <wbr> AllowOverride None</div><div><span style="word-wrap: normal; word-break: normal; color: #333333;"> <wbr>  <wbr></span> Order deny,allow</div><div style="color: #333333;"> <wbr>  <wbr> allow from all</div><div style="color: #333333;"></div></div></div></div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;"><span style="word-wrap: normal; word-break: normal; line-height: 19.5px; font-size: 13px; background-color: #ffffff;">以免讉KApache根目录下的文件时出现以下错误提示Q?/span></div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-align: center; text-indent: 2em; background-color: #919da3;"><img src="http://static.oschina.net/uploads/img/201407/17073206_Ees1.jpg" real_src="http://static.oschina.net/uploads/img/201407/17073206_Ees1.jpg" name="image_operate_371437641891879" alt="Apache和Tomcat整合配置实现JAVA应用?#8220;动静”分离" title="Apache和Tomcat整合配置实现JAVA应用?#8220;动静”分离" action-data="http%3A%2F%2Fstatic.oschina.net%2Fuploads%2Fimg%2F201407%2F17073206_Ees1.jpg" action-type="show-slide" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;">3Q再<span style="word-wrap: normal; word-break: normal; text-indent: 2em;">扑ֈ下面q样的行</span></div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;">Options FollowSymLinks indexes</div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;">把它注掉Ҏ(gu)下面q样</div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;">#Options FollowSymLinks indexes</div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;">Options None</div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;">以免在访问Apache目录时出现直接列表显C子目录或目录下文g的不安全情况Q如下图样子Q?/div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-align: center; text-indent: 2em; background-color: #919da3;"><img src="http://static.oschina.net/uploads/img/201407/17073206_u6dM.jpg" real_src="http://static.oschina.net/uploads/img/201407/17073206_u6dM.jpg" name="image_operate_34941437641232574" alt="Apache和Tomcat整合配置实现JAVA应用?#8220;动静”分离" title="Apache和Tomcat整合配置实现JAVA应用?#8220;动静”分离" action-data="http%3A%2F%2Fstatic.oschina.net%2Fuploads%2Fimg%2F201407%2F17073206_u6dM.jpg" action-type="show-slide" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;">以上配置修改完成后重启Apache服务Q保证要能正常运行?/div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;"></div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;"><strong>三、Apache与Tomcat的整合配|?/strong></div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;"></div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;">Apache(Web Server)负责处理HTML静态内容,Tomcat(App Server)负责处理动态内容;原理囑֦下:(x)</div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-align: center; text-indent: 2em; background-color: #919da3;"><img src="http://static.oschina.net/uploads/img/201407/17073206_HKpu.jpg" real_src="http://static.oschina.net/uploads/img/201407/17073206_HKpu.jpg" name="image_operate_78001437642175367" alt="Apache和Tomcat整合配置实现JAVA应用?#8220;动静”分离" title="Apache和Tomcat整合配置实现JAVA应用?#8220;动静”分离" action-data="http%3A%2F%2Fstatic.oschina.net%2Fuploads%2Fimg%2F201407%2F17073206_HKpu.jpg" action-type="show-slide" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;"></div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;"></div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;"><div style="text-indent: 2em;">上述架构的原理是Q?span style="word-wrap: normal; word-break: normal; text-indent: 2em;"> <wbr>在Apache中装载一个模块,q个模块叫mod_jkQ?/span><span style="word-wrap: normal; word-break: normal; text-indent: 2em;"> <wbr>Apache通过80端口负责解析M静态web内容Q?/span><span style="word-wrap: normal; word-break: normal; text-indent: 2em;"> <wbr>M不能解析的内容,用表辑ּ告诉mod_jkQ让mod_jkz֏l相关的App Server去解释?/span></div><div style="text-indent: 2em;">因此Q首先把 mod_jk-1.2.31-httpd-2.2.3Q可从网上搜索下载该模块Q如http://download.csdn.net/detail/shangkaikuo/4494837Q拷贝到 "/Apache2.2/modules" 目录下。接下来Q?/div><div style="text-indent: 2em;"><strong>1、添?span style="word-wrap: normal; word-break: normal; background-color: #ffffff;"><span style="word-wrap: normal; word-break: normal; line-height: 19.5px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: small; text-indent: 0px;">workers.properties文g</span></span></strong></div></div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;">?“/Tomcat 8.0/conf ” 文g夹下Q也可以是其它目录下Q增?workers.properties 文gQ输入以下内宏V(其中相应目录替换成自己本地tomcat或jre安装目录Q?/div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;"></div><div style="color: #323e32; font-family: 'Microsoft YaHei', 'Helvetica Neue', SimSun; text-indent: 2em; background-color: #919da3;"><div style="text-indent: 2em;"> <wbr>#让mod_jk模块认识Tomcat</div><div style="text-indent: 2em;"> <wbr>workers.tomcat_home=d:/webserver/tomcat/tomcat8</div><div style="text-indent: 2em;"> <wbr>#让mod_jk模块认识JRE</div><div style="text-indent: 2em;"> <wbr>workers.java_home=C:/java/jdk1.8.0_45/jre</div><div style="text-indent: 2em;"> <wbr>#指定文g路径分割W?/div><div style="text-indent: 2em;"> <wbr>ps=/</div><div style="text-indent: 2em;"> <wbr>##</div><div style="text-indent: 2em;"> <wbr>#工作端口Q此端口应该与server.xml中Connector元素的AJP/1.3协议所使用的端口相匚w</div><div style="text-indent: 2em;"> <wbr>worker.list=AJP13</div><div style="text-indent: 2em;"> <wbr>worker.AJP13.port=8009</div><div style="text-indent: 2em;"> <wbr>#Tomcat服务器的地址</div><div style="text-indent: 2em;"> <wbr>worker.AJP13.host=localhost</div><div style="text-indent: 2em;"> <wbr>#cd</div><div style="text-indent: 2em;"> <wbr>worker.AJP13.type=ajp13</div><div style="text-indent: 2em;"> <wbr>#负蝲q因数</div><div style="text-indent: 2em;"> <wbr>worker.AJP13.lbfactor=1</div><div style="text-indent: 2em;"><span style="word-wrap: normal; word-break: normal; text-indent: 2em; color: #ed1c24;"><br /></span></div><div style="text-indent: 2em;"><span style="word-wrap: normal; word-break: normal; text-indent: 2em; color: #ed1c24;">**注意Q?/span><span style="word-wrap: normal; word-break: normal; text-indent: 2em; color: #ed1c24;">worker.list=AJP13中,AJP13定义名称Q但此名U必M下文所q的 “/Apache 2.2/conf/httpd.conf ” 文g中,JkMount指o(h)对应的名U相匚w?/span></div><div style="text-indent: 2em;"><strong style="line-height: 1.5; text-indent: 2em;">2、httpd.conf<span style="word-wrap: normal; word-break: normal; background-color: #ffffff;"><span style="word-wrap: normal; word-break: normal; line-height: 19.5px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: small; text-indent: 0px;">文g中添加配|内?/span></span></strong></div><div style="text-indent: 2em;"><span style="word-wrap: normal; word-break: normal; text-indent: 2em;">加入workers.properties文g后,可修?“/Apache 2.2/conf/httpd.conf ” 文gQ加入以下配|,注意JkMount指o(h)中的变量必须与worker.list所配置的名U相同?/span></div><div style="text-indent: 2em;"><span style="word-wrap: normal; word-break: normal; text-indent: 2em;"><br /></span></div><div style="text-indent: 2em;"><div style="color: #1723fc; text-indent: 2em;"><span style="word-wrap: normal; word-break: normal; text-indent: 2em;"># 此处mod_jk-1.2.31-httpd-2.2.3文gZ下蝲的文?/span></div><div style="text-indent: 2em;">LoadModule  <wbr>jk_module  <wbr>modules/mod_jk-1.2.31-httpd-2.2.3.so</div><div style="color: #1723fc; text-indent: 2em;"># 指定tomcat监听配置文g地址</div><div style="text-indent: 2em;">JkWorkersFile  <wbr>"C:/webserver/tomcat/tomcat8/conf/workers.properties"</div><div style="color: #1723fc; text-indent: 2em;">#JkWorkersFile  <wbr>"C:/webserver/apache/apache22/conf/workers.properties"</div><div style="color: #1723fc; text-indent: 2em;"># 指定日志存放位置</div><div style="color: #1723fc; text-indent: 2em;">JkLogFile  <wbr>"C:/webserver/tomcat/tomcat8/logs/mod_jk2.log"</div><div style="color: #1723fc; text-indent: 2em;">JkLogLevel  <wbr>info</div><div style="color: #1723fc; text-indent: 2em;"></div><div style="color: #1723fc; text-indent: 2em;">-virtualhost *-</div><div style="color: #1723fc; text-indent: 2em;"></div><div style="text-indent: 2em;"></div><div style="color: #1723fc; text-indent: 2em;"></div><div style="color: #1723fc; text-indent: 2em;"> <wbr>  <wbr> ServerName  <wbr>localhost</div><div style="color: #1723fc; text-indent: 2em;"> <wbr>  <wbr> DocumentRoot  <wbr>"C:/webserver/tomcat/tomcat8/webapps"</div><div style="color: #1723fc; text-indent: 2em;"> <wbr>  <wbr> DirectoryIndex  <wbr>index.html index.htm index.jsp index.action</div><div style="color: #1723fc; text-indent: 2em;"> <wbr>  <wbr> ErrorLog  <wbr>logs/shsc-error_log.txt</div><div style="color: #1723fc; text-indent: 2em;"> <wbr>  <wbr> CustomLog  <wbr>logs/shsc-access_log.txt common</div><div style="color: #1723fc; text-indent: 2em;"></div><div style="text-indent: 2em;"> <wbr>  <wbr> JkMount  <wbr>/*WEB-INF AJP13</div><div style="text-indent: 2em;"> <wbr>  <wbr> JkMount  <wbr>/*j_spring_security_check AJP13</div><div style="text-indent: 2em;"> <wbr>  <wbr> JkMount  <wbr>/*.action AJP13</div><div style="text-indent: 2em;"> <wbr>  <wbr> JkMount  <wbr>/servlet/* AJP13</div><div style="text-indent: 2em;"> <wbr>  <wbr> JkMount  <wbr>/*.jsp AJP13</div><div style="text-indent: 2em;"> <wbr>  <wbr> JkMount  <wbr>/*.do AJP13</div><div style="text-indent: 2em;"> <wbr>  <wbr> JkMount  <wbr>/*.action AJP13</div><div style="text-indent: 2em;"><span style="word-wrap: normal; word-break: normal; color: #1723fc;">-/virtualhost-</span></div><div style="text-indent: 2em;"><span style="word-wrap: normal; word-break: normal; color: #1723fc;"><br /></span></div><div style="text-indent: 2em;"></div><div style="color: #1723fc; text-indent: 2em;"></div><div style="color: #1723fc; text-indent: 2em;"></div><div style="text-indent: 2em;">上述配置中的U色内容是ؓ(f)了告诉Apache哪些交给Tomcatd理,其它的都交由Apache自nd理?/div><div style="text-indent: 2em;">其中l色的两句比较关键,分别告诉QApache载入一个额外的插gQ用于连接tomcatQ? <wbr>q接时的配置参数描述位于Tomcat安装目录?conf目录下的一个叫workers.properties文g中,mod_jk一般用ajp13协议q接Q用的是tomcat?009端口?/div><div style="text-indent: 2em;"></div><div style="text-indent: 2em;">完成以上配置后,重启 Apache、Tomcat。此时Apache、Tomcat的默认目录ؓ(f) "C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps ”,Apache使用默认?0端口、Tomcat端口Ҏ(gu)1080或其它非8080默认端口Q修Ҏ(gu)Z安全Q也可以不用修改Q。在Tomcat默认目录下添加test目录Q在该目录下加入index.jsp面Q然后通过http://localhost/test/index.jsp试试是否可以正常讉KQ如面可正常访问,证明整合配置已经成功?/div><div style="text-indent: 2em;"></div><div style="text-indent: 2em;">xQ似乎整个配|工作已l完成,但是如果你想试着把静态的HTML面攑ֈApache的htdocs发布目录下,把JSP{动态内Ҏ(gu)到Tomcat的webapps目录下(该目录下不存?.html文gQ,然后通过http://localhost/index.html惌问Apache目录下的内容Q你?x)发?04之类的不能访问的错误。如何解冻Iq里暂时卖个兛_.......如果你能看出问题Q能Ҏ(gu)解决掉,p挚ؓ(f)你点个赞Q?/div></div></div> <img src ="http://www.aygfsteel.com/youngturk/aggbug/430963.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/youngturk/" target="_blank">youngturk</a> 2016-06-19 20:42 <a href="http://www.aygfsteel.com/youngturk/archive/2016/06/19/430963.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于Tomcat和Tomcat的面试问?/title><link>http://www.aygfsteel.com/youngturk/archive/2016/06/19/430961.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Sun, 19 Jun 2016 02:31:00 GMT</pubDate><guid>http://www.aygfsteel.com/youngturk/archive/2016/06/19/430961.html</guid><wfw:comment>http://www.aygfsteel.com/youngturk/comments/430961.html</wfw:comment><comments>http://www.aygfsteel.com/youngturk/archive/2016/06/19/430961.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/youngturk/comments/commentRss/430961.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/youngturk/services/trackbacks/430961.html</trackback:ping><description><![CDATA[http://www.jfox.info/guan-yu-Tomcat-he-Tomcat-de-mian-shi-wen-ti <br /><div>http://www.jfox.info/guan-yu-Tomcat-he-Tomcat-de-mian-shi-wen-ti</div><h3>关于Tomcat和Tomcat的面试问?/h3><p><strong>一、Tomcat的缺省是多少Q怎么修改</strong></p><p>Tomcat的缺省端口号?080.<br />修改Tomcat端口P(x)<br />1.扑ֈTomcat目录下的conf文g?br />2.q入conf文g多w面找到server.xml文g<br />3.打开server.xml文g<br />4.在server.xml文g里面扑ֈ下列信息<br />maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″<br />enableLookups=”false” redirectPort=”8443″ acceptCount=”100″<br />connectionTimeout=”20000″ disableUploadTimeout=”true” /><br />5.把port=”8080″Ҏ(gu)port=”8888″Qƈ且保?br />6.启动TomcatQƈ且在IE览器里面的地址栏输入http://127.0.0.1:8888/</p><p>7、tomcat默认采用的BIO模型Q在几百q发下性能?x)有很严重的下降。tomcat自带q有NIO的模型,另外也可以调用APR的库来实现操作系l别控制?br />  NIO模型是内|的Q调用很方便Q只需要将上面配置文g中protocol修改?org.apache.coyote.http11.Http11NioProtocolQ重启即可生效。如下面的参数配|,默认的是HTTP/1.1?br />    <Connector port=”8080″   <br />               protocol=”org.apache.coyote.http11.Http11NioProtocol”  <br />               connectionTimeout=”20000″  <br />               redirectPort=”8443″   <br />               maxThreads=”500″   <br />               minSpareThreads=”20″  <br />               acceptCount=”100″ <br />               disableUploadTimeout=”true” <br />               enableLookups=”false”   <br />               URIEncoding=”UTF-8″ /></p><p><strong>二、tomcat 如何优化Q?/strong></p><p> 1、优化连接配|?q里以tomcat7的参数配|ؓ(f)例,需要修改conf/server.xml文gQ修改连接数Q关闭客L(fng)dns查询?/p><p>参数解释Q?/p><p> URIEncoding=”UTF-8″ :使得tomcat可以解析含有中文名的文g的urlQ真方便Q不像apache里还有搞个mod_encodingQ还要手工编?/p><p> maxSpareThreads : 如果I闲状态的U程数多于设|的数目Q则这些线E中止,减少q个池中的线EL?/p><p> minSpareThreads : 最备用线E数Qtomcat启动时的初始化的U程数?/p><p> enableLookups : q个功效和Apache中的HostnameLookups一P设ؓ(f)关闭?/p><p> connectionTimeout : connectionTimeout为网l连接超时时间毫U数?/p><p> maxThreads : maxThreads Tomcat使用U程来处理接收的每个h。这个DCTomcat可创建的最大的U程敎ͼx大ƈ发数?/p><p> acceptCount : acceptCount是当U程数达到maxThreads后,后箋h?x)被攑օ一个等待队列,q个acceptCount是这个队列的大小Q如果这个队列也满了Q就直接refuse connection</p><p> maxProcessors与minProcessors : ?Java中线E是E序q行时的路径Q是在一个程序中与其它控制线E无关的、能够独立运行的代码Dc(din)它们共享相同的地址I间。多U程帮助E序员写出CPU最 大利用率的高效程序,使空闲时间保持最低,从而接受更多的h?/p><p>通常Windows?000个左叻ILinux?000个左叟?/p><p> useURIValidationHack:</p><p>我们来看一下tomcat中的一D|码:(x)</p><p>【security?/p><p>        if (connector.getUseURIValidationHack()) {</p><p>            String uri = validate(request.getRequestURI());</p><p>            if (uri == null) {</p><p>                res.setStatus(400);</p><p>                res.setMessage(“Invalid URI”);</p><p>                throw new IOException(“Invalid URI”);</p><p>            } else {</p><p>                req.requestURI().setString(uri);</p><p>                // Redoing the URI decoding</p><p>                req.decodedURI().duplicate(req.requestURI());</p><p>                req.getURLDecoder().convert(req.decodedURI(), true);</p><p>可以看到如果把useURIValidationHack设成”false”Q可以减它对一些url的不必要的检查从而减省开销?/p><p> enableLookups=”false” Q?Z消除DNS查询Ҏ(gu)能的媄(jing)响我们可以关闭DNS查询Q方式是修改server.xml文g中的enableLookups参数倹{?/p><p> disableUploadTimeout Q类gApache中的keeyalive一?/p><p>lTomcat配置gzip压羃(HTTP压羃)功能</p><p>compression=”on” compressionMinSize=”2048″</p><p>compressableMimeType=”text/html,text/xml,text/javascript,text/css,text/plain”</p><p>HTTP 压羃可以大大提高?gu)览|站的速度Q它的原理是Q在客户端请求网后Q从服务器端网|件压~,再下载到客户端,由客L(fng)的浏览器负责解压~ƈ览。相对于普通的览q程HTML,CSS,Javascript , Text Q它可以节省40%左右的流量。更为重要的是,它可以对动态生成的Q包括CGI、PHP , JSP , ASP , Servlet,SHTML{输出的|页也能q行压羃Q压~效率惊人?/p><p>1)compression=”on” 打开压羃功能</p><p>2)compressionMinSize=”2048″ 启用压羃的输出内容大,q里面默认ؓ(f)2KB</p><p>3)noCompressionUserAgents=”gozilla, traviata” 对于以下的浏览器Q不启用压羃</p><p>4)compressableMimeType=”text/html,text/xml” 压羃cd</p><p>最后不要忘了把8443端口的地方也加上同样的配|,因ؓ(f)如果我们走https协议的话Q我们将?x)用?443端口q个D늚配置Q对吧?</p><p><!–enable tomcat ssl–></p><p>    <Connector port=”8443″ protocol=”HTTP/1.1″</p><p>               URIEncoding=”UTF-8″  minSpareThreads=”25″ maxSpareThreads=”75″</p><p>          enableLookups=”false” disableUploadTimeout=”true” connectionTimeout=”20000″</p><p>          acceptCount=”300″  maxThreads=”300″ maxProcessors=”1000″ minProcessors=”5″</p><p>          useURIValidationHack=”false”</p><p>                    compression=”on” compressionMinSize=”2048″</p><p>                    compressableMimeType=”text/html,text/xml,text/javascript,text/css,text/plain”</p><p>                SSLEnabled=”true”</p><p>           scheme=”https” secure=”true”</p><p>           clientAuth=”false” sslProtocol=”TLS”</p><p>           keystoreFile=”d:/tomcat2/conf/shnlap93.jks” keystorePass=”aaaaaa”</p><p>      /></p><p>好了Q所有的Tomcat优化的地斚w加上了?/p><p>2、优化JDK <br />Tomcat默认可以使用的内存ؓ(f)128MB,Windows?在文件{tomcat_home}/bin/catalina.batQUnix下,在文?CATALINA_HOME/bin/catalina.sh的前面,增加如下讄Q?<br />JAVA_OPTS=”‘$JAVA_OPTS” -Xms[初始化内存大] -Xmx[可以使用的最大内存] <br />?<br />讄环境变量Qexport JAVA_OPTS=””$JAVA_OPTS” -Xms[初始化内存大] -Xmx[可以使用的最大内存]” <br />一般说来,你应该用物理内存的 80% 作ؓ(f)堆大。如果本Z有Apache服务器,可以先折Apache需要的内存Q然后修改堆大小。徏议设|ؓ(f)70Q;讄[[初始化内存大]{于[可以使用的最大内存]Q这样可以减^凡分配堆而降低性能?<br />本例使用加入环境变量的方式:(x) <br /># vi /etc/profile <br />加入Qexport JAVA_OPTS=””$JAVA_OPTS” -Xms700 —Xmx700 <br /># source /etc/profile</p><p>【参数说明?/p><p>-Xms 是指讑֮E序启动时占用内存大。一般来Ԍ大点Q程序会(x)启动?快一点,但是也可能会(x)D机器暂时间变慢?/p><p>-Xmx 是指讑֮E序q行期间最大可占用的内存大。如果程序运行需要占 用更多的内存Q超Zq个讄|׃(x)抛出OutOfMemory 异常?/p><p>-Xss 是指讑֮每个U程的堆栈大。这个就要依据你的程序,看一个线E?大约需要占用多内存,可能?x)有多少U程同时q行{?/p><p>-XX:PermSize讄非堆内存初始|默认是物理内存的1/64 ?/p><p>-XX:MaxPermSize讄最大非堆内存的大小Q默认是物理内存?/4?/p><p><strong>三、tomcat 有那几种Connector q行模式Q?/strong></p><p>tomcat的运行模式有3U?修改他们的运行模?3U模式的q行是否成功,可以看他的启动控制台,或者启动日?或者登录他们的默认面http://localhost:8080/查看其中的服务器状态?/p><p>1)bio</p><p>默认的模?性能非常低下,没有l过M优化处理和支?</p><p>2)nio</p><p>利用java的异步io护理技?no blocking IO技?</p><p>惌行在该模式下Q直接修改server.xml里的Connector节点,修改protocol?/p><p> <Connector port=”80″ protocol=”org.apache.coyote.http11.Http11NioProtocol” <br />    connectionTimeout=”20000″ <br />    URIEncoding=”UTF-8″ <br />    useBodyEncodingForURI=”true” <br />    enableLookups=”false” <br />    redirectPort=”8443″ /></p><p>启动?可以生效?/p><p>3)apr</p><p>安装h最困难,但是从操作系l别来解决异步的IO问题,大幅度的提高性能.</p><p>必须要安装apr和nativeQ直接启动就支持apr。下面的修改U属多余Q仅供大家扩充知?但仍焉要安装apr和native</p><p>如nio修改模式,修改protocol为org.apache.coyote.http11.Http11AprProtocol</p><img src ="http://www.aygfsteel.com/youngturk/aggbug/430961.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/youngturk/" target="_blank">youngturk</a> 2016-06-19 10:31 <a href="http://www.aygfsteel.com/youngturk/archive/2016/06/19/430961.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring httpInvoke 解决q程调用q程的类的方?/title><link>http://www.aygfsteel.com/youngturk/archive/2016/06/19/430960.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Sun, 19 Jun 2016 02:29:00 GMT</pubDate><guid>http://www.aygfsteel.com/youngturk/archive/2016/06/19/430960.html</guid><wfw:comment>http://www.aygfsteel.com/youngturk/comments/430960.html</wfw:comment><comments>http://www.aygfsteel.com/youngturk/archive/2016/06/19/430960.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/youngturk/comments/commentRss/430960.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/youngturk/services/trackbacks/430960.html</trackback:ping><description><![CDATA[http://zhidao.baidu.com/link?url=6FrnwvBQEZhjM-ooNCuiAra7T6qi9FsFhFvkHBKaOjqovZR86OCsIePi-05nM-fxRrlInEGbElSxlhgO6X7JsaGNdQdNrQ2xE58wglgeQO3 http://blog.csdn.net/liaq325/article/details/8281550 摘自以上 spring httpInvoke <br /><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;">spring httpInvoke Zspring架构的服务器之间的远E调用实现。通过spring httpInvokeQ可以调用远E接口,q行数据交互、业务逻辑操作<br /></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;">服务器端Q?被调用一?</p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><div bg_java"="" style="width: 936.53125px; overflow-y: hidden; position: relative; line-height: 26px;"><div><div><strong>[java]</strong> <a title="view plain" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif); background-position: 0% 0%; background-repeat: no-repeat;">view plain</a><span data-mod="popu_168"> <a title="copy" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif); background-position: 0% 0%; background-repeat: no-repeat;">copy</a><div style="position: absolute; left: 561px; top: 537px; width: 18px; height: 18px; z-index: 99;"></div></span></div></div><ol start="1"><li style="line-height: 18px;">public  class User implements Serializable{//必须实现serializable接口Q远E调用的基础  </li><li style="line-height: 18px;">    private String username;  </li><li style="line-height: 18px;">    private Date birthday;  </li><li style="line-height: 18px;">    //构造方?nbsp; </li><li style="line-height: 18px;">    //set get Ҏ(gu)  </li><li style="line-height: 18px;">}  </li><li style="line-height: 18px;">public interface UserService{  </li><li style="line-height: 18px;">    User getUser(String username);  </li><li style="line-height: 18px;">}  </li><li style="line-height: 18px;">public UserServiceImpl implements UserService{  </li><li style="line-height: 18px;">    //实现userService  </li><li style="line-height: 18px;">}  </li></ol></div><span style="font-family: Arial; line-height: 26px; background-color: #ffffff;">重要的配|文件来了。。。?/span><br style="font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="font-family: Arial; line-height: 26px; background-color: #ffffff;">remote-servlet.xml攑֜目根目录下面,跟web.xml相同的?/span><br style="font-family: Arial; line-height: 26px; background-color: #ffffff;" /><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;">暴露l调用端Q服务的实现Q接?/p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><div bg_html"="" style="width: 936.53125px; overflow-y: hidden; position: relative; line-height: 26px;"><div><div><strong>[html]</strong> <a title="view plain" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif); background-position: 0% 0%; background-repeat: no-repeat;">view plain</a><span data-mod="popu_168"> <a title="copy" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif); background-position: 0% 0%; background-repeat: no-repeat;">copy</a><div style="position: absolute; left: 563px; top: 900px; width: 18px; height: 18px; z-index: 99;"></div></span></div></div><ol start="1"><li style="line-height: 18px;"><span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">bean</span> <span style="color: red;">id</span>=<span style="color: blue;">"userService"</span> <span style="color: red;">class</span>=<span style="color: blue;">"org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">property</span> <span style="color: red;">name</span>=<span style="color: blue;">"service"</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">        <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">bean</span> <span style="color: red;">class</span>=<span style="color: blue;">"com.cd.Liaq.UserServiceImpl"</span><span style="color: #993300; font-weight: bold;">/></span>  </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">property</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">property</span> <span style="color: red;">name</span>=<span style="color: blue;">"serviceInterface"</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">        <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">value</span><span style="color: #993300; font-weight: bold;">></span>com.cd.Liaq.UserService<span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">value</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">property</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;"><span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">bean</span><span style="color: #993300; font-weight: bold;">></span>  </li></ol></div><span style="font-family: Arial; line-height: 26px; background-color: #ffffff;">暴露了服务的实现和接口,那么怎么讉K服务呢?</span><br style="font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="font-family: Arial; line-height: 26px; background-color: #ffffff;">spring装讉Kurl</span><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><div bg_html"="" style="width: 936.53125px; overflow-y: hidden; position: relative; line-height: 26px;"><div><div><strong>[html]</strong> <a title="view plain" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif); background-position: 0% 0%; background-repeat: no-repeat;">view plain</a><span data-mod="popu_168"> <a title="copy" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif); background-position: 0% 0%; background-repeat: no-repeat;">copy</a><div style="position: absolute; left: 563px; top: 1165px; width: 18px; height: 18px; z-index: 99;"></div></span></div></div><ol start="1"><li style="line-height: 18px;"><span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">bean</span> <span style="color: red;">class</span>=<span style="color: blue;">"org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">    W一U:(x)<span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">property</span> <span style="color: red;">name</span>=<span style="color: blue;">"urlMap"</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">        <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">map</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">            <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">entry</span> <span style="color: red;">key</span>=<span style="color: blue;">"TestUser"</span> <span style="color: red;">value-ref</span>=<span style="color: blue;">"userService"</span><span style="color: #993300; font-weight: bold;">/></span>  </li><li style="line-height: 18px;">        <span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">map</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">property</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">    W二U:(x)<span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">prop</span> <span style="color: red;">key</span>=<span style="color: blue;">"/TestUser"</span><span style="color: #993300; font-weight: bold;">></span>userService<span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">prop</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;"><span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">bean</span><span style="color: #993300; font-weight: bold;">></span>  </li></ol></div><span style="font-family: Arial; line-height: 26px; background-color: #ffffff;">web.xml:配置dispatcherServletp用一方?/span><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><div bg_html"="" style="width: 936.53125px; overflow-y: hidden; position: relative; line-height: 26px;"><div><div><strong>[html]</strong> <a title="view plain" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif); background-position: 0% 0%; background-repeat: no-repeat;">view plain</a><span data-mod="popu_168"> <a title="copy" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif); background-position: 0% 0%; background-repeat: no-repeat;">copy</a><div style="position: absolute; left: 563px; top: 1404px; width: 18px; height: 18px; z-index: 99;"></div></span></div></div><ol start="1"><li style="line-height: 18px;"><!-- springq程调用 -->  </li><li style="line-height: 18px;"><span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">servlet</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">servlet-name</span><span style="color: #993300; font-weight: bold;">></span>remote<span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">servlet-name</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">servlet-class</span><span style="color: #993300; font-weight: bold;">></span>org.springframework.web.servlet.DispatcherServlet<span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">servlet-class</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">load-on-startup</span><span style="color: #993300; font-weight: bold;">></span>1<span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">load-on-startup</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;"><span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">servlet</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;"><span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">servlet-mapping</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">servlet-name</span><span style="color: #993300; font-weight: bold;">></span>remote<span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">servlet-name</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">url-pattern</span><span style="color: #993300; font-weight: bold;">></span>/remoting/*<span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">url-pattern</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;"><span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">servlet-mapping</span><span style="color: #993300; font-weight: bold;">></span>  </li></ol></div><span style="font-family: Arial; line-height: 26px; color: #ff6666; background-color: #ffffff;">到处为止Q被调用端一方完?!!!</span><br style="font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="font-family: Arial; line-height: 26px; background-color: #ffffff;">客户端调用:(x)</span><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><div bg_html"="" style="width: 936.53125px; overflow-y: hidden; position: relative; line-height: 26px;"><div><div><strong>[html]</strong> <a title="view plain" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif); background-position: 0% 0%; background-repeat: no-repeat;">view plain</a><span data-mod="popu_168"> <a title="copy" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif); background-position: 0% 0%; background-repeat: no-repeat;">copy</a><div style="position: absolute; left: 563px; top: 1705px; width: 18px; height: 18px; z-index: 99;"></div></span></div></div><ol start="1"><li style="line-height: 18px;"><!-- 通过httpq接q程pȝ -->  </li><li style="line-height: 18px;"><span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">bean</span> <span style="color: red;">id</span>=<span style="color: blue;">"memberService"</span>  </li><li style="line-height: 18px;">    <span style="color: red;">class</span>=<span style="color: blue;">"org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">property</span> <span style="color: red;">name</span>=<span style="color: blue;">"serviceUrl"</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">        <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">value</span><span style="color: #993300; font-weight: bold;">></span>http://192.9.200.123:8080/MemberSystem/remoting/memberService<span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">value</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">property</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">property</span> <span style="color: red;">name</span>=<span style="color: blue;">"serviceInterface"</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">        <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">value</span><span style="color: #993300; font-weight: bold;">></span>com.cd.Liaq.UserService<span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">value</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">property</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;"><span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">bean</span><span style="color: #993300; font-weight: bold;">></span>  </li></ol></div><span style="font-family: Arial; line-height: 26px; background-color: #ffffff;">通过spring容器调用UserService,用到HttpInvokerProxyFactoryBean工厂Q配|serviceUrl和serviceInterface</span><br style="font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="font-family: Arial; line-height: 26px; background-color: #ffffff;">Z提高效率Q客L(fng)使用Commons-HttpClientQ导入改包,改写配置</span><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><div bg_html"="" style="width: 936.53125px; overflow-y: hidden; position: relative; line-height: 26px;"><div><div><strong>[html]</strong> <a title="view plain" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif); background-position: 0% 0%; background-repeat: no-repeat;">view plain</a><span data-mod="popu_168"> <a title="copy" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif); background-position: 0% 0%; background-repeat: no-repeat;">copy</a><div style="position: absolute; left: 563px; top: 2006px; width: 18px; height: 18px; z-index: 99;"></div></span></div></div><ol start="1"><li style="line-height: 18px;"><span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">bean</span> <span style="color: red;">id</span>=<span style="color: blue;">"memberService"</span>  </li><li style="line-height: 18px;">    <span style="color: red;">class</span>=<span style="color: blue;">"org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">property</span> <span style="color: red;">name</span>=<span style="color: blue;">"serviceUrl"</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">        <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">value</span><span style="color: #993300; font-weight: bold;">></span>http://192.9.200.123:8080/MemberSystem/remoting/memberService<span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">value</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">property</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">property</span> <span style="color: red;">name</span>=<span style="color: blue;">"serviceInterface"</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">        <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">value</span><span style="color: #993300; font-weight: bold;">></span>com.cd.Liaq.UserService<span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">value</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">property</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;">     <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">property</span> <span style="color: red;">name</span>=<span style="color: blue;">"httpInvokerRequestExecutor"</span><span style="color: #993300; font-weight: bold;">></span> //使用指定的执行器执行  </li><li style="line-height: 18px;">        <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">ref</span> <span style="color: red;">bean</span>=<span style="color: blue;">"httpInvokerRequestExecutor"</span> <span style="color: #993300; font-weight: bold;">/></span>    </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">property</span><span style="color: #993300; font-weight: bold;">></span>    </li><li style="line-height: 18px;"><span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">bean</span><span style="color: #993300; font-weight: bold;">></span>  </li><li style="line-height: 18px;"><span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">bean</span> <span style="color: red;">id</span>=<span style="color: blue;">"httpInvokerRequestExecutor"</span> <span style="color: red;">class</span>=<span style="color: blue;">"org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor"</span><span style="color: #993300; font-weight: bold;">></span>    </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">property</span> <span style="color: red;">name</span>=<span style="color: blue;">"httpClient"</span><span style="color: #993300; font-weight: bold;">></span>    </li><li style="line-height: 18px;">        <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">bean</span> <span style="color: red;">class</span>=<span style="color: blue;">"org.apache.commons.httpclient.HttpClient"</span><span style="color: #993300; font-weight: bold;">></span>    </li><li style="line-height: 18px;">            <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">property</span> <span style="color: red;">name</span>=<span style="color: blue;">"connectionTimeout"</span> <span style="color: red;">value</span>=<span style="color: blue;">"2000"</span> <span style="color: #993300; font-weight: bold;">/></span>    </li><li style="line-height: 18px;">            <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">property</span> <span style="color: red;">name</span>=<span style="color: blue;">"timeout"</span> <span style="color: red;">value</span>=<span style="color: blue;">"5000"</span> <span style="color: #993300; font-weight: bold;">/></span>    </li><li style="line-height: 18px;">        <span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">bean</span><span style="color: #993300; font-weight: bold;">></span>    </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">property</span><span style="color: #993300; font-weight: bold;">></span>    </li><li style="line-height: 18px;"><span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">bean</span><span style="color: #993300; font-weight: bold;">></span>    </li></ol></div><br style="font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="font-family: Arial; line-height: 26px; background-color: #ffffff;">配置时旉timeout和连接超时connectionTimeout两个属?/span><br style="font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="font-family: Arial; line-height: 26px; background-color: #ffffff;">优化执行器:(x)多线E?==被调用端响应旉~短很多</span><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><div bg_html"="" style="width: 936.53125px; overflow-y: hidden; position: relative; line-height: 26px;"><div><div><strong>[html]</strong> <a title="view plain" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif); background-position: 0% 0%; background-repeat: no-repeat;">view plain</a><span data-mod="popu_168"> <a title="copy" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif); background-position: 0% 0%; background-repeat: no-repeat;">copy</a><div style="position: absolute; left: 563px; top: 2513px; width: 18px; height: 18px; z-index: 99;"></div></span></div></div><ol start="1"><li style="line-height: 18px;"><span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">bean</span> <span style="color: red;">id</span>=<span style="color: blue;">"httpInvokerRequestExecutor"</span> <span style="color: red;">class</span>=<span style="color: blue;">"org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor"</span><span style="color: #993300; font-weight: bold;">></span>    </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">property</span> <span style="color: red;">name</span>=<span style="color: blue;">"httpClient"</span><span style="color: #993300; font-weight: bold;">></span>    </li><li style="line-height: 18px;">        <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">bean</span> <span style="color: red;">class</span>=<span style="color: blue;">"org.apache.commons.httpclient.HttpClient"</span><span style="color: #993300; font-weight: bold;">></span>    </li><li style="line-height: 18px;">            <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">property</span> <span style="color: red;">name</span>=<span style="color: blue;">"connectionTimeout"</span> <span style="color: red;">value</span>=<span style="color: blue;">"2000"</span> <span style="color: #993300; font-weight: bold;">/></span>    </li><li style="line-height: 18px;">            <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">property</span> <span style="color: red;">name</span>=<span style="color: blue;">"timeout"</span> <span style="color: red;">value</span>=<span style="color: blue;">"5000"</span> <span style="color: #993300; font-weight: bold;">/></span>    </li><li style="line-height: 18px;">            <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">property</span>  <span style="color: red;">name</span>=<span style="color: blue;">"httpConnectionManager"</span><span style="color: #993300; font-weight: bold;">></span>//控制q接  </li><li style="line-height: 18px;">                    <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">ref</span>  <span style="color: red;">bean</span>=<span style="color: blue;">"multiThreadedHttpConnectionManager"</span> <span style="color: #993300; font-weight: bold;">/></span>    </li><li style="line-height: 18px;">            <span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">property</span><span style="color: #993300; font-weight: bold;">></span>    </li><li style="line-height: 18px;">        <span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">bean</span><span style="color: #993300; font-weight: bold;">></span>    </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">property</span><span style="color: #993300; font-weight: bold;">></span>    </li><li style="line-height: 18px;"><span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">bean</span><span style="color: #993300; font-weight: bold;">></span>    </li><li style="line-height: 18px;"><span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">bean</span> <span style="color: red;">id</span>=<span style="color: blue;">"multiThreadedHttpConnectionManager"</span> <span style="color: red;">class</span>=<span style="color: blue;">"org.apache.commons.httpclient.MultiThreadedHttpConnectionManager"</span><span style="color: #993300; font-weight: bold;">></span>    </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">property</span> <span style="color: red;">name</span>=<span style="color: blue;">"params"</span><span style="color: #993300; font-weight: bold;">></span>    </li><li style="line-height: 18px;">        <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">bean</span> <span style="color: red;">class</span>=<span style="color: blue;">"org.apache.commons.httpclient.params.HttpConnectionManagerParams"</span><span style="color: #993300; font-weight: bold;">></span>    </li><li style="line-height: 18px;">            <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">property</span> <span style="color: red;">name</span>=<span style="color: blue;">"maxTotalConnections"</span>  <span style="color: red;">value</span>=<span style="color: blue;">"600"</span> <span style="color: #993300; font-weight: bold;">/></span>    </li><li style="line-height: 18px;">            <span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">property</span> <span style="color: red;">name</span>=<span style="color: blue;">"defaultMaxConnectionsPerHost"</span> <span style="color: red;">value</span>=<span style="color: blue;">"512"</span> <span style="color: #993300; font-weight: bold;">/></span>    </li><li style="line-height: 18px;">        <span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">bean</span><span style="color: #993300; font-weight: bold;">></span>    </li><li style="line-height: 18px;">    <span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">property</span><span style="color: #993300; font-weight: bold;">></span>    </li><li style="line-height: 18px;"><span style="color: #993300; font-weight: bold;"></</span><span style="color: #993300; font-weight: bold;">bean</span><span style="color: #993300; font-weight: bold;">></span>    </li></ol></div><span style="font-family: Arial; line-height: 26px; background-color: #ffffff;">httpClient?.1版本不支持这U配|?/span><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><div bg_html"="" style="width: 936.53125px; overflow-y: hidden; position: relative; line-height: 26px;"><div><div><strong>[html]</strong> <a title="view plain" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif); background-position: 0% 0%; background-repeat: no-repeat;">view plain</a><span data-mod="popu_168"> <a title="copy" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif); background-position: 0% 0%; background-repeat: no-repeat;">copy</a><div style="position: absolute; left: 563px; top: 2950px; width: 18px; height: 18px; z-index: 99;"></div></span></div></div><ol start="1"><li style="line-height: 18px;"><span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">property</span>  <span style="color: red;">name</span>=<span style="color: blue;">"connectionTimeout"</span> <span style="color: red;">value</span>=<span style="color: blue;">"2000"</span> <span style="color: #993300; font-weight: bold;">/></span>      </li><li style="line-height: 18px;"><span style="color: #993300; font-weight: bold;"><</span><span style="color: #993300; font-weight: bold;">property</span>  <span style="color: red;">name</span>=<span style="color: blue;">"timeout"</span>  <span style="color: red;">value</span>=<span style="color: blue;">"5000"</span> <span style="color: #993300; font-weight: bold;">/></span>    </li></ol></div><br style="font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="font-family: Arial; line-height: 26px; background-color: #ffffff;">另外httpClient本n也是多线E的。。HttpClient that uses a default MultiThreadedHttpConnectionManage</span><br style="font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="font-family: Arial; line-height: 26px; background-color: #ffffff;"><bean class="org.apache.commons.httpclient.params.HttpConnectionManagerParams">  </span><br style="font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="font-family: Arial; line-height: 26px; background-color: #ffffff;">    <property  name="maxTotalConnections"  value="600" />  </span><br style="font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="font-family: Arial; line-height: 26px; background-color: #ffffff;">    <property  name="defaultMaxConnectionsPerHost"  value="512" />  </span><br style="font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="font-family: Arial; line-height: 26px; background-color: #ffffff;"></bean>  </span><br style="font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="font-family: Arial; line-height: 26px; background-color: #ffffff;">maxConnectionsPerHost 每个L的最大ƈ行链接数Q默认ؓ(f)2 </span><br style="font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="font-family: Arial; line-height: 26px; background-color: #ffffff;">public static final int DEFAULT_MAX_HOST_CONNECTIONS = 2; </span><br style="font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="font-family: Arial; line-height: 26px; background-color: #ffffff;">maxTotalConnections 客户端dƈ行链接最大数Q默认ؓ(f)20  </span><br style="font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="font-family: Arial; line-height: 26px; background-color: #ffffff;">public static final int DEFAULT_MAX_TOTAL_CONNECTIONS = 20; </span><br style="font-family: Arial; line-height: 26px; background-color: #ffffff;" /><property name="connectionTimeout" value="2000"><property name="timeout" value="5000"> </property></property><img src ="http://www.aygfsteel.com/youngturk/aggbug/430960.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/youngturk/" target="_blank">youngturk</a> 2016-06-19 10:29 <a href="http://www.aygfsteel.com/youngturk/archive/2016/06/19/430960.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>6. 分布式缓存集环境配|??/title><link>http://www.aygfsteel.com/youngturk/archive/2016/06/19/430959.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Sat, 18 Jun 2016 16:22:00 GMT</pubDate><guid>http://www.aygfsteel.com/youngturk/archive/2016/06/19/430959.html</guid><wfw:comment>http://www.aygfsteel.com/youngturk/comments/430959.html</wfw:comment><comments>http://www.aygfsteel.com/youngturk/archive/2016/06/19/430959.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/youngturk/comments/commentRss/430959.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/youngturk/services/trackbacks/430959.html</trackback:ping><description><![CDATA[     摘要: http://www.cnblogs.com/hoojo/archive/2012/07/19/2599534.htmlhttp://www.cnblogs.com/hellowood23/p/5210267.htmlhttp://blog.csdn.net/ni_hao_ya/article/details/9344779http://www.cnblogs.com/hellowood23/p/...  <a href='http://www.aygfsteel.com/youngturk/archive/2016/06/19/430959.html'>阅读全文</a><img src ="http://www.aygfsteel.com/youngturk/aggbug/430959.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/youngturk/" target="_blank">youngturk</a> 2016-06-19 00:22 <a href="http://www.aygfsteel.com/youngturk/archive/2016/06/19/430959.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>手动获取spring的ApplicationContext和bean对象 http://www.aygfsteel.com/youngturk/archive/2016/06/18/430958.htmlyoungturkyoungturkSat, 18 Jun 2016 15:56:00 GMThttp://www.aygfsteel.com/youngturk/archive/2016/06/18/430958.htmlhttp://www.aygfsteel.com/youngturk/comments/430958.htmlhttp://www.aygfsteel.com/youngturk/archive/2016/06/18/430958.html#Feedback0http://www.aygfsteel.com/youngturk/comments/commentRss/430958.htmlhttp://www.aygfsteel.com/youngturk/services/trackbacks/430958.htmlWEB目Q?/strong>

Ҏ(gu)1Q?/p>

1
ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc)

 Ҏ(gu)2Q?/p>

1
ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc)

 Ҏ(gu)3Q?/p>

1
写一个工L(fng)cȝ承ApplicationObjectSupport,q将q个加入到spring的容?/code>

 Ҏ(gu)4Q?/p>

1
写一个工L(fng)cȝ承WebApplicationObjectSupport,q将q个加入到spring的容?/code>

 Ҏ(gu)5Q?推荐)

1
写一个工L(fng)实现ApplicationContextAware接口,q将q个加入到spring的容?/code>

 CZQ?/p>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import java.util.Map;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
 
/**
 * 获取ApplicationContext和Object的工L(fng)
 * @author yzl
 *
 */
@SuppressWarnings({ "rawtypes", "unchecked" })
public class SpringContextUtils implements ApplicationContextAware {
    private static ApplicationContext applicationContext;
 
    public void setApplicationContext(ApplicationContext arg0)
            throws BeansException {
        applicationContext = arg0;
    }
 
    /**
     * 获取applicationContext对象
     * @return
     */
    public static ApplicationContext getApplicationContext(){
        return applicationContext;
    }
     
    /**
     * Ҏ(gu)bean的id来查扑֯?/code>
     * @param id
     * @return
     */
    public static Object getBeanById(String id){
        return applicationContext.getBean(id);
    }
     
    /**
     * Ҏ(gu)bean的class来查扑֯?/code>
     * @param c
     * @return
     */
    public static Object getBeanByClass(Class c){
        return applicationContext.getBean(c);
    }
     
    /**
     * Ҏ(gu)bean的class来查找所有的对象(包括子类)
     * @param c
     * @return
     */
    public static Map getBeansByClass(Class c){
        return applicationContext.getBeansOfType(c);
    }
}

 

 

非WEB目

1
ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml")

可选的操作Ҏ(gu)有:(x)

1
2
3
4
5
6
7
8
9
10
11
一Q?/code>
String[]   path={"WebRoot/WEB-INF/applicationContext.xml","WebRoot/WEB-INF/applicationContext_task.xml"};
ApplicationContext context = new FileSystemXmlApplicationContext(path);
 
二:(x)
String path="WebRoot/WEB-INF/applicationContext*.xml";
ApplicationContext context = new FileSystemXmlApplicationContext(path);
 
三:(x)
ApplicationContext ctx = new FileSystemXmlApplicationContext("classpath:地址");
没有classpath的话是从当前的工作目录


youngturk 2016-06-18 23:56 发表评论
]]>
Ehcache学习(fn) ?/title><link>http://www.aygfsteel.com/youngturk/archive/2016/06/18/430956.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Sat, 18 Jun 2016 07:45:00 GMT</pubDate><guid>http://www.aygfsteel.com/youngturk/archive/2016/06/18/430956.html</guid><wfw:comment>http://www.aygfsteel.com/youngturk/comments/430956.html</wfw:comment><comments>http://www.aygfsteel.com/youngturk/archive/2016/06/18/430956.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/youngturk/comments/commentRss/430956.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/youngturk/services/trackbacks/430956.html</trackback:ping><description><![CDATA[     摘要: http://ligf06.iteye.com/blog/17108875.    ?nbsp;Spring 中运?nbsp;EHCache需要?Spring 来实C?Cache 单的解决Ҏ(gu)Q具体需求如下:(x)使用L一个现有开?Cache FrameworkQ要求?Cache pȝ?Service 或则 DAO 层的...  <a href='http://www.aygfsteel.com/youngturk/archive/2016/06/18/430956.html'>阅读全文</a><img src ="http://www.aygfsteel.com/youngturk/aggbug/430956.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/youngturk/" target="_blank">youngturk</a> 2016-06-18 15:45 <a href="http://www.aygfsteel.com/youngturk/archive/2016/06/18/430956.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>应用技术ȝhttp://www.aygfsteel.com/youngturk/archive/2016/06/18/430954.htmlyoungturkyoungturkSat, 18 Jun 2016 05:38:00 GMThttp://www.aygfsteel.com/youngturk/archive/2016/06/18/430954.htmlhttp://www.aygfsteel.com/youngturk/comments/430954.htmlhttp://www.aygfsteel.com/youngturk/archive/2016/06/18/430954.html#Feedback0http://www.aygfsteel.com/youngturk/comments/commentRss/430954.htmlhttp://www.aygfsteel.com/youngturk/services/trackbacks/430954.html

youngturk 2016-06-18 13:38 发表评论
]]>
վ֩ģ壺 | ʯ| ̨| | | | ˮ| Ͻ| | | Ҧ| Է| | Ϸ| ̨| | | | 㶫ʡ| 㽭ʡ| | | | ˳| ֶ| | ͨ| Ӳ| Ʊ| | ɽ| ƺ| ɽ| | ű| ͷ| ӻ| 㶫ʡ| Ž| | |