<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    176142998

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      116 Posts :: 0 Stories :: 45 Comments :: 0 Trackbacks

    #

    package com.org.softwore.util;

    import java.io.IOException;
    import java.io.InputStream;
    import java.io.PrintStream;
    import java.net.SocketException;

    import org.apache.commons.net.telnet.TelnetClient;

    import com.org.softwore.domain.TelnetInfo;

    public class TelnetUtil {
     private TelnetClient telnet = new TelnetClient("VT220");
     private InputStream in;
     private PrintStream out;
     private String prompt = ">";
     String s;

     public void TelnetCmd(TelnetInfo telnetInfo) throws SocketException,
       IOException, InterruptedException {

      // 防火墻中高級的網(wǎng)絡(luò)連接設(shè)置的本地連接取消選擇
      // Connect to the specified server
      telnet.connect(telnetInfo.getServerIp(), telnetInfo.getServerPort());
      // Get input and output stream references
      in = telnet.getInputStream();
      out = new PrintStream(telnet.getOutputStream());

      // Login telnet
      readUntil("login: ");
      write(telnetInfo.getServerUser());
      readUntil("password: ");
      write(telnetInfo.getServerPwd());
      readUntil(prompt);

      // 執(zhí)行命令
      if (telnetInfo.getMap() != null) {
       int a = 0;
       for (Integer id : telnetInfo.getMap().keySet()) {
        String temp = telnetInfo.getMap().get(id);
        write(temp);
        // 處理ftp登錄,不需要執(zhí)行readUntil(prompt)
        if (temp.startsWith("ftp")) {
         a = 2;
        }
        if (a > 0) {
         a = a - 1;
         continue;
        } else {
         readUntil(prompt);
        }

       }
      }
      System.out.println("\n");
     }

     public String readUntil(String pattern) throws IOException {
      char lastChar = pattern.charAt(pattern.length() - 1);
      StringBuffer sb = new StringBuffer();
      // boolean found = false;
      char ch = (char) in.read();

      while (true) {
       sb.append(ch);
       if (ch == lastChar) {
        if (sb.toString().endsWith(pattern)) {
         // 處理編碼,界面顯示亂碼問題
         byte[] temp = sb.toString().getBytes("iso8859-1");
         System.out.print(new String(temp, "GBK"));
         return new String(temp, "GBK");
        }
       }
       ch = (char) in.read();
      }
     }

     public void write(String value) throws InterruptedException {
      out.println(value);
      out.flush();
      Thread.sleep(1000);
     }

     public void disconnect() throws IOException {
      telnet.disconnect();
     }
    }


    package com.org.softwore.domain;

    import java.io.Serializable;
    import java.util.TreeMap;

    public class TelnetInfo implements Serializable {

     /**
      *
      */
     private static final long serialVersionUID = -6592407260449335815L;
     private String serverIp;
     private String serverUser;
     private String serverPwd;
     private int serverPort;
     private String ftpIp;
     private String ftpUser;
     private String ftpPwd;
     private String ftpPort;
     private TreeMap<Integer, String> map;

     public TreeMap<Integer, String> getMap() {
      return map;
     }

     public void setMap(TreeMap<Integer, String> map) {
      this.map = map;
     }

     public String getServerIp() {
      return serverIp;
     }

     public void setServerIp(String serverIp) {
      this.serverIp = serverIp;
     }

     public String getServerUser() {
      return serverUser;
     }

     public void setServerUser(String serverUser) {
      this.serverUser = serverUser;
     }

     public String getServerPwd() {
      return serverPwd;
     }

     public void setServerPwd(String serverPwd) {
      this.serverPwd = serverPwd;
     }

     public int getServerPort() {
      return serverPort;
     }

     public void setServerPort(int serverPort) {
      this.serverPort = serverPort;
     }

     public String getFtpIp() {
      return ftpIp;
     }

     public void setFtpIp(String ftpIp) {
      this.ftpIp = "ftp " + ftpIp;
     }

     public String getFtpUser() {
      return ftpUser;
     }

     public void setFtpUser(String ftpUser) {
      this.ftpUser = ftpUser;
     }

     public String getFtpPwd() {
      return ftpPwd;
     }

     public void setFtpPwd(String ftpPwd) {
      this.ftpPwd = ftpPwd;
     }

     public String getFtpPort() {
      return ftpPort;
     }

     public void setFtpPort(String ftpPort) {
      this.ftpPort = ftpPort;
     }

    }



    package com.org.softwore.service;

    public interface TelnetService {

     public boolean windowsTelnetDownLoad();

     public boolean windowsTelnetUpLoad();

     public boolean windowsTelnetUpGrade();
     
     public boolean windowsTelnetTomcat(String stats);
     
     public boolean windowsTelnetBackUpSoftware();
    }



    package com.org.softwore.service.impl;

    import java.io.IOException;
    import java.net.SocketException;
    import java.util.TreeMap;

    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;

    import com.org.softwore.domain.TelnetInfo;
    import com.org.softwore.service.TelnetService;
    import com.org.softwore.util.TelnetUtil;

    @Transactional
    @Service("telnetService")
    public class TelnetServiceImpl implements TelnetService {

     /**
      * 上傳升級問價到ftp服務(wù)器
      */
     @Override
     public boolean windowsTelnetUpLoad() {
      boolean reslut = false;

      TelnetInfo telnetInfo = new TelnetInfo();
      telnetInfo.setServerIp("127.0.0.1");
      telnetInfo.setServerUser("administrator");
      telnetInfo.setServerPwd("123456");
      telnetInfo.setServerPort(23);

      TreeMap<Integer, String> map = new TreeMap<Integer, String>();
      map.put(1, "ftp 10.39.62.45");
      map.put(2, "admin");
      map.put(3, "admintianyi");
      map.put(4, "bin");
      map.put(5, "mkdir test1");
      map.put(6, "cd /test1");
      map.put(7, "put c:\\upgrade\\appMarketWebApi.zip");
      map.put(8, "put c:\\upgrade\\T_RANKSWITCHTEMP.sql");
      map.put(9, "bye");
      telnetInfo.setMap(map);

      TelnetCmd(telnetInfo);
      return reslut;
     }
     
     /**
      * 下載升級程序和文件
      */
     @Override
     public boolean windowsTelnetDownLoad() {
      boolean reslut = false;

      TelnetInfo telnetInfo = new TelnetInfo();
      //telnet
      telnetInfo.setServerIp("127.0.0.1");
      telnetInfo.setServerUser("administrator");
      telnetInfo.setServerPwd("123456");
      telnetInfo.setServerPort(23);

      TreeMap<Integer, String> map = new TreeMap<Integer, String>();
      map.put(1, "cd c:\\");
      map.put(2, "rd test /s /q");
      map.put(3, "mkdir test");
      map.put(4, "ftp 10.39.62.45");
      map.put(5, "admin");
      map.put(6, "admintianyi");
      map.put(7, "bin");
      map.put(8, "lcd c:\\test");
      map.put(9, "cd test1");
      map.put(10, "get appMarketWebApi.zip");
      map.put(11, "get T_RANKSWITCHTEMP.sql");
      map.put(12, "bye");
      telnetInfo.setMap(map);

      TelnetCmd(telnetInfo);
      return reslut;
     }
     
     /**
      * 服務(wù)器開啟和關(guān)閉
      */
     @Override
     public boolean windowsTelnetTomcat(String stats) {
      //安裝tomcat7,使用服務(wù)來進行啟動和停止
      boolean reslut = false;

      TelnetInfo telnetInfo = new TelnetInfo();
      telnetInfo.setServerIp("127.0.0.1");
      telnetInfo.setServerUser("administrator");
      telnetInfo.setServerPwd("123456");
      telnetInfo.setServerPort(23);

      // 需要執(zhí)行的sql語句
      TreeMap<Integer, String> map = new TreeMap<Integer, String>();
      if(stats.equals("start")){
       map.put(1, "net start Tomcat7");
      }
      if(stats.equals("stop")){
       map.put(1, "net stop Tomcat7");
      }
      telnetInfo.setMap(map);

      TelnetCmd(telnetInfo);
      return reslut;
     }
     
     /**
      * 備份軟件程序
      */
     @Override
     public boolean windowsTelnetBackUpSoftware(){
      boolean reslut = false;
      
      TelnetInfo telnetInfo = new TelnetInfo();
      telnetInfo.setServerIp("127.0.0.1");
      telnetInfo.setServerUser("administrator");
      telnetInfo.setServerPwd("123456");
      telnetInfo.setServerPort(23);
      
      // 需要執(zhí)行的sql語句
      TreeMap<Integer, String> map = new TreeMap<Integer, String>();
      //執(zhí)行sql腳本
      map.put(1, "cd c:\\");
      map.put(2, "rd testback /s /q");
      map.put(3, "mkdir testback");
      map.put(4, "cd c:\\testback");
      map.put(5, "mkdir appMarketWebApi");
      map.put(6, "xcopy \"c:\\Tomcat 7.0\\webapps\\appMarketWebApi\"  appMarketWebApi /s /y");
      telnetInfo.setMap(map);
      
      TelnetCmd(telnetInfo);
      
      return reslut;
      
     }
     
     
     /**
      * 執(zhí)行sql腳本和升級程序
      */
     @Override
     public boolean windowsTelnetUpGrade() {
      boolean reslut = false;

      TelnetInfo telnetInfo = new TelnetInfo();
      telnetInfo.setServerIp("127.0.0.1");
      telnetInfo.setServerUser("administrator");
      telnetInfo.setServerPwd("123456");
      telnetInfo.setServerPort(23);

      // 需要執(zhí)行的sql語句
      TreeMap<Integer, String> map = new TreeMap<Integer, String>();
      //執(zhí)行sql腳本
      map.put(1, "sqlplus appstore/appstore@appstore226");
      map.put(2, "@c:\\test\\T_RANKSWITCHTEMP.sql");
      map.put(3, "exit");
      
      //執(zhí)行升級程序
      map.put(5, "cd c:\\test");
      map.put(6, "unzip appMarketWebApi.zip");
      map.put(7, "xcopy appMarketWebApi \"c:\\Tomcat 7.0\\webapps\\appMarketWebApi\" /s /y");
      
      telnetInfo.setMap(map);

      TelnetCmd(telnetInfo);
      return reslut;
     }

     /**
      * 公共的調(diào)用執(zhí)行telnet命令
      * @param telnetInfo
      * @return
      */
     public boolean TelnetCmd(TelnetInfo telnetInfo) {
      boolean reslut = false;
      if (telnetInfo != null) {
       TelnetUtil telnet = new TelnetUtil();
       try {
        telnet.TelnetCmd(telnetInfo);
        telnet.disconnect();
        reslut = true;
       } catch (SocketException e) {
        e.printStackTrace();
       } catch (IOException e) {
        e.printStackTrace();
       } catch (InterruptedException e) {
        e.printStackTrace();
       }
      }
      return reslut;
     }
    }


    package com.org.softwore.controller;

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.stereotype.Controller;

    import com.org.softwore.service.TelnetService;

    @Controller("telnetController")
    public class TelnetController {

     @Autowired
     @Qualifier("telnetService")
     private TelnetService telnetService;

     /**
      * 上傳升級問價到ftp服務(wù)器
      */
     public void windowsTelnetUpLoad() {
      telnetService.windowsTelnetUpLoad();
     }

     /**
      * 下載升級程序和文件
      */
     public void windowsTelnetDownLoad() {
      telnetService.windowsTelnetDownLoad();
     }

     /**
      * 備份軟件程序
      */
     public void windowsTelnetBackUpSoftware() {
      telnetService.windowsTelnetBackUpSoftware();
     }

     /**
      * 服務(wù)關(guān)閉
      */
     public void windowsTelnetStopTomcat() {
      String stats = "stop";
      telnetService.windowsTelnetTomcat(stats);
     }

     /**
      * 執(zhí)行sql腳本和升級程序
      */
     public void windowsTelnetUpGrade() {
      telnetService.windowsTelnetUpGrade();
     }

     /**
      * 服務(wù)開啟
      */
     public void windowsTelnetStartTomcat() {
      String stats = "start";
      telnetService.windowsTelnetTomcat(stats);
     }
    }



    package com.org.softwore.service;

    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

    import com.org.softwore.controller.TelnetController;

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration( { "/applicationContext.xml" })
    public class TelnetUtilTest {

     @Autowired
     @Qualifier("telnetController")
     private TelnetController telnetController;

     /**
      * 上傳升級問價到ftp服務(wù)器
      */
     @Test
     public void windowsTelnetUpLoad() {
      telnetController.windowsTelnetUpLoad();
     }

     /**
      * 下載升級程序和文件
      */
     @Test
     public void windowsTelnetDownLoad() {
      telnetController.windowsTelnetDownLoad();
     }

     /**
      * 備份軟件程序
      */
     @Test
     public void windowsTelnetBackUpSoftware() {
      telnetController.windowsTelnetBackUpSoftware();
     }

     /**
      * 關(guān)閉服務(wù)
      */
     @Test
     public void windowsTelnetStopTomcat() {
      telnetController.windowsTelnetStopTomcat();
     }

     /**
      * 執(zhí)行sql腳本和升級程序
      */
     @Test
     public void windowsTelnetUpGrade() {
      telnetController.windowsTelnetUpGrade();
     }

     /**
      * 啟動服務(wù)
      */
     @Test
     public void windowsTelnetStartTomcat() {
      telnetController.windowsTelnetStartTomcat();
     }
    }

    posted @ 2011-04-13 17:34 飛飛 閱讀(2585) | 評論 (0)編輯 收藏

    為了進行系統(tǒng)維護操作,有時需要再windows和linux或Unix系統(tǒng)之間互傳文件,雖然有很多工具可以實現(xiàn)該功能,但我還是覺得命令行來的方便快捷,起初使用linux的scp命令,總是不成功,網(wǎng)上也沒有相關(guān)介紹,經(jīng)過幾次努力之后,終于成功的摸索出了scp命令在寫windows的路徑時的寫法,于是馬上下了出來,與大家分享:

    從linux系統(tǒng)復制文件到windows系統(tǒng):scp /oracle/a.txt  administrator@192.168.3.181:/d:/

    在linux環(huán)境下,將windows下的文件復制到linux系統(tǒng)中:scp administrator@192.168.3.181:/d:/test/config.ips  /oracle

    請注意:因為windows系統(tǒng)本身不支持ssh協(xié)議,所以,要想上面的命令成功執(zhí)行,必須在windows客戶端安裝ssh for windows的客戶端軟件,比如winsshd,使windows系統(tǒng)支持ssh協(xié)議才行。

    posted @ 2011-04-13 15:57 飛飛 閱讀(597) | 評論 (0)編輯 收藏

    commons-net-2.0.jar
    log4j-1.2.15.jar


    package com;

    import java.io.InputStream;
    import java.io.PrintStream;

    import org.apache.commons.net.telnet.TelnetClient;
    import org.apache.log4j.Logger;

    public class TelnetHandler {
     private static final Logger logger = Logger.getLogger(TelnetHandler.class);
     private TelnetClient telnet = new TelnetClient("VT220");
     private InputStream in;
     private PrintStream out;
     private String prompt=" ";
     String s;

     public void TelnetCmd(String server, String user, String password) {
      try {
       // Connect to the specified server
       telnet.connect(server, 23);
       logger.info("Login............................");
       // Get input and output stream references
       in = telnet.getInputStream();
       out = new PrintStream(telnet.getOutputStream());
       // Login
       readUntil("login: ");
       write(user);
       readUntil("password: ");
       write(password);
       // Advance to a prompt
       readUntil(prompt);
      } catch (Exception e) {
       e.printStackTrace();
       logger.info("logon failed", e);
      }
     }

     public String readUntil(String pattern) {
      try {
       char lastChar = pattern.charAt(pattern.length() - 1);
       StringBuffer sb = new StringBuffer();
       // boolean found = false;
       char ch = (char) in.read();

       while (true) {
        System.setProperty("GBK", "iso8859-1");
        System.out.print(ch);
        sb.append(ch);
        if (ch == lastChar) {
         if (sb.toString().endsWith(pattern)) {
          // System.out.print( sb.toString());
          return sb.toString();
         }
        }
        ch = (char) in.read();
       }
      } catch (Exception e) {
       e.printStackTrace();
      }
      return null;
     }

     public void write(String value) {
      try {
       out.println(value);
       out.flush();
    //   System.out.println(value);
      } catch (Exception e) {
       e.printStackTrace();
      }
     }

     public String sendCmd(String command) {
      try {
       write(command);
       return readUntil(s + prompt);
      } catch (Exception e) {
       e.printStackTrace();
      }
      return null;
     }

     public void disconnect() {
      try {
       telnet.disconnect();
      } catch (Exception e) {
       e.printStackTrace();
      }
     }

     public static void main(String[] args) {
      try {
       logger.info("發(fā)送命令開始");
       TelnetHandler telnet1 = new TelnetHandler();
       telnet1.TelnetCmd("127.0.0.1", "administrator", "123456");
       // Exec Cmd
    //   telnet1.sendCmd("dir");
       telnet1.sendCmd("cd c:\\test");
       telnet1.disconnect();
    //   telnet1.sendCmd("xcopy c:\\httpdownload.txt c:\\test");
       
       logger.info("發(fā)送命令結(jié)束");
       
       
      } catch (Exception e) {
       e.printStackTrace();
      }
     }
    }

    posted @ 2011-04-12 17:37 飛飛 閱讀(836) | 評論 (0)編輯 收藏

    1、建一個Project取名為SOAP
    2、將axis-1_4\webapps\axis\WEB-INF\lib下的所有文件拷貝到你的SOAP工程文件下
    3、新建一個HelloWord.java
    package com;
    public class HelloWord {
    public String getHelloWord(userInfo userInfo) {
    return "hi!:" + userInfo.getName() + "| " + userInfo.getPassword()
    + " | " + userInfo.getArea();
    }
    }
     
    4、新建一個userInfo.java 對象
    package com;
    public class userInfo implements java.io.Serializable{
    /**
     * 
     */
    private static final long serialVersionUID = -1536718814867769008L;
    String name;
    String password;
    String area;
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public String getPassword() {
    return password;
    }
    public void setPassword(String password) {
    this.password = password;
    }
    public String getArea() {
    return area;
    }
    public void setArea(String area) {
    this.area = area;
    }
    }
    5、在WEB-INF\server-config.wsdd 文件添加以下內(nèi)容(注意顏色標記的地方時跟soap相關(guān)的地方)
    <?xml version="1.0" encoding="UTF-8"?>
    <deployment xmlns="http://xml.apache.org/axis/wsdd/"
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    <handler type="java:org.apache.axis.handlers.http.URLMapper"
    name="URLMapper" />
    <service name="HelloWord" provider="java:RPC">
    <parameter name="className" value="com.HelloWord" />
    <parameter name="allowedMethods" value="getHelloWord" />
    <beanMapping languageSpecificType="java:com.userInfo" qname="ns:userInfo" xmlns:ns="urn:BeanService"/>
    </service>
    <transport name="http">
    <requestFlow>
    <handler type="URLMapper" />
    </requestFlow>
    </transport>
    </deployment> 
    6、web.xml 內(nèi)容
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web
    Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    <display-name>Apache-Axis</display-name>
    <servlet>
    <servlet-name>AxisServlet</servlet-name>
    <display-name>Apache-Axis Servlet</display-name>
    <servlet-class>
    org.apache.axis.transport.http.AxisServlet
        </servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/servlet/AxisServlet</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>*.jws</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jws</welcome-file>
    </welcome-file-list>
    </web-app>
    7、訪問路徑 http://localhost:8080/SOAP/services/HelloWord?wsdl
    8、使用soapUI 3.6.1 生成客戶端JUNIT測試代碼.進行單元測試!設(shè)置soapui的axis參數(shù)
    9、生成客戶端JUNIT測試代碼
     
     
    10、將生成的代碼放到SOAP工程下。修改測試用例。
     
     
    11、執(zhí)行測試,查看結(jié)果:
    posted @ 2011-04-01 17:21 飛飛 閱讀(1786) | 評論 (1)編輯 收藏

    Nginx作為一個后起之秀,他的迷人之處已經(jīng)讓很多人都投入了他的懷抱。配置簡單,實現(xiàn)原理簡單。做一個負載平衡的再好不過了。

    其原理:

    簡單介紹一下他的安裝及配置過程

    官方網(wǎng)站
    http://wiki.codemongers.com/Main

    一、依賴的程序

    1. gzip module requires zlib library
    2. rewrite module requires pcre library
    3. ssl support requires openssl library

    二、安裝
    ./configure
    make
    make install

    默認安裝的路徑是/usr/local/nginx

    更多的安裝配置
    ./configure --prefix=/usr/local/nginx
    --with-openssl=/usr/include (啟用ssl)
    --with-pcre=/usr/include/pcre/ (啟用正規(guī)表達式)
    --with-http_stub_status_module (安裝可以查看nginx狀態(tài)的程序)
    --with-http_memcached_module (啟用memcache緩存)
    --with-http_rewrite_module (啟用支持url重寫)


    三、啟動及重啟
    啟動:nginx
    重啟:kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
    測試配置文件:nginx -t

    簡單吧,安裝,啟動都比較方便。

    四、配置文件
    http://wiki.codemongers.com/NginxFullExample

    #運行用戶
    user nobody nobody;
    #啟動進程
    worker_processes 5;
    #全局錯誤日志及PID文件
    error_log logs/error.log notice;
    pid logs/nginx.pid;
    #工作模式及連接數(shù)上限
    events {
    #工作模式有:select(標準模式),poll(標準模式),kqueue(高效模式,適用FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 and MacOS X),
    #epoll(高效模式,本例用的。適用Linux 2.6+,SuSE 8.2,),/dev/poll(高效模式,適用Solaris 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+)
    use epoll;
    worker_connections 1024;
    }
    #設(shè)定http服務(wù)器,利用它的反向代理功能提供負載均衡支持
    http {
    #設(shè)定mime類型
    include conf/mime.types;
    default_type application/octet-stream;
    #設(shè)定日志格式
    log_format main '$remote_addr - $remote_user [$time_local] '
    '"$request" $status $bytes_sent '
    '"$http_referer" "$http_user_agent" '
    '"$gzip_ratio"';
      log_format download    '$remote_addr - $remote_user [$time_local] '
    '"$request" $status $bytes_sent '
    '"$http_referer" "$http_user_agent" '
    '"$http_range" "$sent_http_content_range"';
      #設(shè)定請求緩沖
    client_header_buffer_size 10k;
    large_client_header_buffers 4 4k;

    #開啟gzip模塊,要求安裝gzip 在運行./config時要指定
    gzip on;
    gzip_min_length 1100;
    gzip_buffers 4 8k;
    gzip_types text/plain;
    output_buffers 1 32k;
    postpone_output 1460;

    #設(shè)定訪問日志
    access_log logs/access.log main;
    client_header_timeout 3m;
    client_body_timeout 3m;
    send_timeout 3m;
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;

    #設(shè)定負載均衡的服務(wù)器列表
    upstream backserver {
    #weigth參數(shù)表示權(quán)值,權(quán)值越高被分配到的幾率越大
    #本例是指在同一臺服務(wù)器,多臺服務(wù)器改變ip即可
    server 127.0.0.1:8081 weight=5;
    server 127.0.0.1:8082;
    server 127.0.0.1:8083;
    }
      #設(shè)定虛擬主機,默認為監(jiān)聽80端口,改成其他端口會出現(xiàn)問題
    server {
    listen 80;
    server_name test.com www.test.com;
    charset utf8;
    #設(shè)定本虛擬主機的訪問日志
    access_log logs/test.com.log main;
    #如果訪問 /images/*, /js/*, /css/* 資源,則直接取本地文件,不用轉(zhuǎn)發(fā)。但如果文件較多效果不是太好。
    location ~ ^/(images|js|css)/ {
    root /usr/local/testweb;
    expires 30m;
    }

    #對 "/" 啟用負載均衡
    location / {
    proxy_pass http://backserver;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    client_max_body_size 10m;
    client_body_buffer_size 128k;
    proxy_connect_timeout 90;
    proxy_send_timeout 90;
    proxy_read_timeout 90;
    proxy_buffer_size 4k;
    proxy_buffers 4 32k;
    proxy_busy_buffers_size 64k;
    proxy_temp_file_write_size 64k;
    }
    #設(shè)定查看Nginx狀態(tài)的地址,在運行./config 要指定,默認是不安裝的。
    location /NginxStatus {
    stub_status on;
    access_log on;
    auth_basic "NginxStatus";
    #是否要通過用戶名和密碼訪問,測試時可以不加上。conf/htpasswd 文件的內(nèi)容用 apache 提供的 htpasswd 工具來產(chǎn)生即可
    #auth_basic_user_file conf/htpasswd;
    }
    }
    posted @ 2010-11-25 21:15 飛飛 閱讀(191) | 評論 (0)編輯 收藏

    ATI Installer HOWTO for SUSE/Novell users
    openSUSE 10.2
    If you want or need to use the latest and greatest ATI driver, continue here .
    Use  YaST -> Software -> Change installation Source -> Add  Protocol: http  Server Name: : www2.ati.com  Directory on Server: suse/10.2to add the ATI http server as additional installation source.Now use  YaST -> Software -> Install and Delete Softwareto install the ATI/fglrx driver. Select the following packages:  x11-video-fglrxG01  ati-fglrxG01-kmp-<kernel-flavor><kernel-flavor> depends on your installed kernel. Check with"uname -r" for installed default/smp/bigsmp kernel. Use "sax2 -r"for X.Org configuration.SUSE LINUX 10.1 / SLES10 / SLED10
    If you want or need to use the latest and greatest ATI driver, continue here .
    Update your Kernel via YOU (YaST Online Update). Use  YaST -> Software -> Change installation Source -> Add  Protocol: http  Server Name: : www2.ati.com  Directory on Server: suse/sle10to add the ATI http server as additional installation source.Now use  YaST -> Software -> Install and Delete Softwareto install the ATI/fglrx driver. Select the following packages:  x11-video-fglrx  ati-fglrx-kmp-<kernel-flavor><kernel-flavor> depends on your installed kernel. Check with "uname -r" for installed default/smp/bigsmp kernel. Use "sax2 -r"for X.Org configuration.Manual driver installation for SUSE LINUX 10.0, SLES9, NLD9 and earlier
    Since ATI driver release 8.16.20 the ATI installer needs to be usedto create SUSE/Novell RPMs. Download the ATI installer from the ATI website.  http://www.ati.com --> Drivers & Software --> LinuxIt is possible to create RPMs for the following SUSE/Novell distros.This information has been retrieved by using the installer itself:  ati-driver-installer-8.35.5-x86.x86_64.run --listpkg[...]SuSE Packages:        SuSE/NLD9-IA32  NLD9        SuSE/SLES9-IA32  SLES9        SuSE/SUSE91-IA32 SUSE 9.1        SuSE/NLD9-AMD64  NLD9 (x86_64)        SuSE/SLES9-AMD64 SLES9 (x86_64)        SuSE/SUSE91-AMD64 SUSE 9.1 (x86_64)        SuSE/SUSE100-IA32 SUSE 10.0        SuSE/SUSE92-IA32 SUSE 9.2        SuSE/SUSE93-IA32 SUSE 9.3        SuSE/SUSE100-AMD64 SUSE 10.0 (x86_64)        SuSE/SUSE92-AMD64 SUSE 9.2 (x86_64)        SuSE/SUSE93-AMD64 SUSE 9.3 (x86_64)        SuSE/SLED10-IA32 SLED10        SuSE/SLES10-IA32 SLES10        SuSE/SUSE101-IA32 SUSE 10.1        SuSE/SLED10-AMD64 SLED10 (x86_64)        SuSE/SLES10-AMD64 SLES10 (x86_64)        SuSE/SUSE101-AMD64 SUSE 10.1 (x86_64)        SuSE/SUSE102-IA32 openSUSE 10.2        SuSE/SUSE102-AMD64 openSUSE 10.2 (x86_64) Example:--------Create a RPM for SUSE 10.0 (i386) by using the installer.  ./ati-driver-installer-8.35.5-x86.x86_64.run --buildpkg SuSE/SUSE100-IA32Afterwards install the created RPM by using the rpm command. In thementioned example above this would be:  rpm -Uhv fglrx_6_8_0_SUSE100-8.35.5-1.i386.rpmThe postinstall script of this RPM will try to compile the requiredkernel module. If this fails, you'll get a message how to proceed.You still need to configure the driver with SaX2. Details can be foundin /usr/share/doc/packages/fglrx/README.SuSE.Unfortunately you need to recompile the "fglrx" kernel module rightafter any kernel (security) update. Use "fglrx-kernel-build.sh" for this.

    本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/mtnk/archive/2007/03/31/1547912.aspx

    posted @ 2010-10-26 16:32 飛飛 閱讀(388) | 評論 (0)編輯 收藏

         摘要: Suse Linux Enterprise Server 11.0 安裝、配置與管理手冊 Version 1.0 1. 安裝準備 l       x86計算機,20G以上硬盤,100M以太網(wǎng)卡,2G以上內(nèi)存; l       安裝介質(zhì):SuseLinux DVD 2-1...  閱讀全文
    posted @ 2010-10-26 10:15 飛飛 閱讀(2192) | 評論 (0)編輯 收藏

  • //接受   
  • String attachmentFile = "XXXXXXXX";    
  • //u can get correct attachment filename with this method ^&^    
  • attachmentFile = MimeUtility.decodeText(attachmentFile);    
  •   
  • //發(fā)郵件的時候這樣設(shè)置附件名    
  • attachmentPart.setFileName(MimeUtility.encodeText(fds.getName()));  
  • posted @ 2010-09-01 23:36 飛飛 閱讀(604) | 評論 (0)編輯 收藏

     使用java mail 包收發(fā)中文郵件的編碼,解碼問題以及解決方法
    JSP教程-郵件相關(guān)
    編碼


    郵件頭(參見RFC822,RFC2047)只能包含US-ASCII字符。郵件頭中任何包含非US-ASCII字符的部分必須進行編碼,使其只 包含US-ASCII字符。所以使用java mail發(fā)送中文郵件必須經(jīng)過編碼,否則別人收到你的郵件只能是亂碼一堆。不過使用java mail 包的解決方法很簡單,用它自帶的MimeUtility工具中encode開頭的方法(如encodeText)對中文信息進行編碼就可以了。



    例子:



    MimeMessage mimeMsg = new MimeMessage(mailSession);



    //讓javamail決定用什么方式來編碼 ,編碼內(nèi)容的字符集是系統(tǒng)字符集mimeMsg.setSubject( MimeUtility.encodeText( Subject) );



    //使用指定的base64方式編碼,并指定編碼內(nèi)容的字符集是gb2312

    mimeMsg.setSubject( MimeUtility.encodeText( Subject,”gb2312”,”B”));



    通常對郵件頭的編碼方式有2種,一種是base64方式編碼,一種是QP(quoted-printable)方式編碼,javamail根據(jù)具體情況來選擇編碼方式。



    如“txt測試”編碼后內(nèi)容如下:

    =?GBK?Q?Txt=B2=E2=CA=D4



    里面有個=?GBK?Q?,GBK表示的是內(nèi)容的字符集,?Q?表示的是以QP方式編碼的,后面緊跟的才是編碼后的中文字符。所以用MimeUtility工具編碼后的信息里包含了編碼方式的信息。



    郵件的正文也要進行編碼,但它不能用MimeUtility里的方法來編碼。郵件正文的編碼方式的信息是要放在Content- Transfer-Encoding這個郵件頭參數(shù)中的,而MimeUtility里面的方法是將編碼方式的信息放在編碼后的正文內(nèi)容中。所以如果你對正 文也用MimeUtility進行處理,那么其他郵件程序就不會正常顯示你編碼的郵件,因為其他郵件軟件如outlook,foxmail只會根據(jù) Content-Transfer-Encoding這個里面的信息來對郵件正文進行解碼。



    其實,郵件正文部分的編碼javamail已經(jīng)自動幫你做了,當你發(fā)送郵件的時候,它會自己決定編碼方式,并把編碼方式的信息放入 Content-Transfer-Encoding這個郵件頭參數(shù)中,然后再發(fā)送。所以你所要做的就是直接把郵件正文的內(nèi)容放入郵件中就可以了。



    對郵件正文的編碼方式比較多,包括了base64和QP方式,還有一些如7bit,8bit等等,因為javamail自動為郵件正文編碼,所以我就不一一祥敘了。



    例子:



    //處理郵件正文

    MimeBodyPart mbp=new MimeBodyPart();



    if ( ContentType() == null || ContentType.equals(""))

    mbp.setText( Content );

    else

    mbp.setContent( Content, Content );











    解碼


    javamail包中的MimeUtility工具中也提供了對郵件信息解碼的方法,都是以decode開頭的一些方法(如decodeText)



    例子:

    String Subject = mimemsg.getSubject();

    String ChSubject = MimeUtility.decodeText(Subject);



    對于base64和QP編碼后信息,decode* 方法能將他們正確的解碼,但是,如果指定的字符集不對,那么javamail就會出現(xiàn)錯誤,不能正確地將其解碼。



    如有的郵件系統(tǒng)將”txt測試”編碼后如下:

    =?x-unkown?Q?Txt=B2=E2=CA=D4



    這里指定的字符集是x-unknown,是非明確的字符集,javamail就不能正確的處理了,但是”測試”這兩個中文字還是按照gbk字符集編碼的,所以你可以手工的將編碼方式信息改正確,再用decode*方法來解碼。



    例子:

    if ( str.indexOf("=?x-unknown?") >=0 ){

    str = str.replaceAll("x-unknown","gbk" ); // 將編碼方式的信息由x-unkown改為gbk

    try{

    str = MimeUtility.decodeText( str ); //再重新解碼

    }catch( Exception e1){

    return str ;

    }





    decode*方法都是根據(jù)在編碼信息中包含的編碼方式的信息來解碼,所以decode*方法對郵件正文解碼是無效的,因為郵件正文中不包含編碼方式的信息。



    同編碼一樣,郵件正文的解碼也是由javamail做了。Javamail根據(jù)Content-Transfer-Encoding里的信息,來對郵件的正文解碼。

    客戶程序從javamail取得的正文內(nèi)容字符集為iso-8859-1,所以還要將字符集轉(zhuǎn)換一下,例:



    String CorrectContent = new String( Content.getbytes(“iso-8859-1”),”gb2312”);



    CorrentContent為正確的郵件正文了

    posted @ 2010-09-01 23:34 飛飛 閱讀(3329) | 評論 (0)編輯 收藏

         摘要: A概念 最常用的概念 1、 scalars:存儲單值 字符串:簡單文本由單或雙引號括起來。 數(shù)字:直接使用數(shù)值。 日期:通常從數(shù)據(jù)模型獲得 布爾值:true或false,通常在<#if …>標記中使用   2、 hashes:充當其它對象的容器,每個都關(guān)聯(lián)一個唯一的查詢名字 具有一個唯一的查詢名字和他包含的每個變量...  閱讀全文
    posted @ 2010-07-03 18:09 飛飛 閱讀(37476) | 評論 (4)編輯 收藏

    僅列出標題
    共12頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
    主站蜘蛛池模板: 国产V片在线播放免费无码| 男女啪啪免费体验区| 99re6在线视频精品免费下载| 在线观看亚洲成人| 国产免费人视频在线观看免费| 好看的电影网站亚洲一区| 又粗又长又爽又长黄免费视频| 国产成人免费A在线视频| 国产精品亚洲AV三区| 国产成人在线观看免费网站| 全黄A免费一级毛片| 亚洲区小说区激情区图片区| 久草视频在线免费看| 免费a级毛片无码av| 亚洲一级毛片免费在线观看| 一级一看免费完整版毛片| 久久久久亚洲av成人无码电影 | 特级毛片aaaa级毛片免费| 99re热精品视频国产免费| 久久亚洲精精品中文字幕| 久久精品免费全国观看国产| 好看的亚洲黄色经典| 久久99热精品免费观看牛牛| 亚洲国产精品日韩| 天堂在线免费观看| 国产成人精品日本亚洲专区| 亚洲AV无码男人的天堂| 国产福利在线免费| WWW亚洲色大成网络.COM | 亚洲乱码一二三四区国产| 很黄很污的网站免费| 亚洲欧洲国产视频| 免费国产成人午夜私人影视| 大地影院MV在线观看视频免费| 91嫩草亚洲精品| 四虎精品亚洲一区二区三区| 男男gay做爽爽免费视频| 国产精品久免费的黄网站| 国产一二三四区乱码免费| 久久精品国产亚洲沈樵| 国产免费拔擦拔擦8X高清在线人|