⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 factory.java

📁 Java Mail Server JAVA编写的邮件服务器
💻 JAVA
字号:
/**************************************************************** * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.     * *                                                              * * Copyright 2008 Jun Li(SiChuan University, the School of      * * Software Engineering). All rights reserved.                  * *                                                              * * Licensed to the JMS under one  or more contributor license   * * agreements.  See the LICENCE file  distributed with this     * * work for additional information regarding copyright          * * ownership.  The JMS licenses this file  you may not use this * * file except in compliance  with the License.                 * *                                                              * * Unless required by applicable law or agreed to in writing,   * * software distributed under the License is distributed on an  * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       * * KIND, either express or implied.  See the License for the    * * specific language governing permissions and limitations      * * under the License.                                           * ****************************************************************/package org.jpxx.mail;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.Writer;import org.apache.log4j.Logger;import org.apache.log4j.xml.DOMConfigurator;import org.jpxx.mail.Config.Configuration;import org.jpxx.mail.Config.XmlConfig;import org.jpxx.mail.Exception.InvalidServiceException;import org.jpxx.mail.Pop3.Pop3Server;import org.jpxx.mail.Service.AbstractServer;import org.jpxx.mail.Service.Server;import org.jpxx.mail.Smtp.SmtpServer;import org.jpxx.mail.plugin.console.ConsoleServer;/** * This is a Calss factory to create instance of some classes. *  * @author Jun Li * @version $Revision: 0.0.3 $, $Date: 2008/05/20 $ * @since JMS 0.0.1 */public class Factory {    private static Factory singletonInstance = null;    /**     * Gets a singleton instance of Factory.     * @since JMS 0.0.1     * @return a singleton instance of Factory     */    public static Factory getSingletonInstance() {        if (singletonInstance == null) {            // Creates a instance.            singletonInstance = new Factory();        }        return singletonInstance;    }    private Factory() {        init();    }    /**        * Creates an instance of <tt>Server<tt>.     *      * <p>This function needs to make better.</p>     *      * @deprecated NEED IMPROVE     *      * @since JMS 0.0.1     * @param serviceName Such as "SMTP", "POP3"     * @return the object of Server. if this is no service found, return null.     * @throws org.jpxx.mail.Exception.InvalidServiceException     */    public Server getServer(String serviceName) throws InvalidServiceException {        if (serviceName == null) {            throw new InvalidServiceException("Service Name is NULL");        }        AbstractServer server = null;        if (serviceName.toUpperCase().equals("SMTP")) {            server = SmtpServer.getSingletonInstance();        } else if (serviceName.toUpperCase().equals("POP") ||                serviceName.toUpperCase().equals("POP3")) {            server = Pop3Server.getSingletonInstance();        } else if (serviceName.toUpperCase().equals("CONSOLE") ||                serviceName.toUpperCase().equals("CONSOLE")) {            server = ConsoleServer.getSingletonInstance();        }        if (server != null) {            return server;        } else {            throw new InvalidServiceException("Service Name Not found");        }    }    /**     * Creates an instance of <tt>Configuration<tt>.     * @since JMS 0.0.1     * @return an instance of XmlConfig.     */    public Configuration getConfiguration() {        return new XmlConfig(Constants.CONFIG_FILE_PATH);    }    /**     * Creates an instance of <tt>org.apache.log4j.Logger<tt>.     * @param className The class you will write log.     * @since JMS 0.0.1     * @return Logger instance.     */    public Logger getLogger(String className) {        return Logger.getLogger(className);    }    /**     * Creates an instance of <tt>org.apache.log4j.Logger<tt>.     * @since JMS 0.0.1     * @param o The class you will write log.     * @return Logger instance.     */    public Logger getLogger(Object o) {        return getLogger(o.getClass().getName());    }    // <editor-fold defaultstate="collapsed" desc="Initialization">     /**     * Initials JMS config. Does someting before JMS started.     *      * @since JMS 0.0.1     */    private void init() {        File f = new File(Constants.LOG4J_FILE_PATH);        if (!f.exists()) {            try {                String p = f.getAbsolutePath();                String dir = p.substring(0, p.lastIndexOf(File.separator));                new File(dir).mkdirs();                f.createNewFile();                StringBuilder s = new StringBuilder();                s.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n");                s.append("<!DOCTYPE log4j:configuration SYSTEM \"log4j.dtd\">\r\n");                s.append("<log4j:configuration xmlns:log4j=\"http://jakarta.apache.org/log4j/\">\r\n");                s.append("\r\n");                s.append("  <appender name=\"rollingFileAppender\" class=\"org.apache.log4j.RollingFileAppender\">\r\n");                s.append("      <param name=\"Threshold\" value=\"ALL\"/>\r\n");                s.append("      <param name=\"File\" value=\"" + Constants.LOG_FILE_PATH + "\" />\r\n");                s.append("      <param name=\"Append\" value=\"true\" />\r\n");                s.append("      <param name=\"MaxFileSize\" value=\"1024KB\" />\r\n");                s.append("      <layout class=\"org.apache.log4j.PatternLayout\">\r\n");                s.append("          <!--<param name=\"ConversionPattern\" value=\"%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n\" />-->\r\n");                s.append("          <param name=\"ConversionPattern\" value=\"[%d{yyyy-MM-dd HH:mm:ss}] %m%n\" />\r\n");                s.append("      </layout>\r\n");                s.append("  </appender>\r\n");                s.append("\r\n");                s.append("  <appender name=\"dailyRollingFileAppender\" class=\"org.apache.log4j.DailyRollingFileAppender\">\r\n");                s.append("      <param name=\"Threshold\" value=\"ALL\"/>\r\n");                s.append("      <param name=\"File\" value=\"" + Constants.LOG_FILE_PATH + "\" />\r\n");                s.append("      <param name=\"Append\" value=\"false\" />\r\n");                s.append("      <param name=\"DatePattern\" value=\"'.'yyyy-MM-dd'.log'\" />\r\n");                s.append("      <layout class=\"org.apache.log4j.PatternLayout\">\r\n");                s.append("          <param name=\"ConversionPattern\" value=\"%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n\" />\r\n");                s.append("      </layout>\r\n");                s.append("  </appender>\r\n");                s.append("\r\n");                s.append("  <appender name=\"STDOUT\" class=\"org.apache.log4j.ConsoleAppender\">\r\n");                s.append("      <param name=\"Target\" value=\"System.out\" />\r\n");                s.append("      <layout class=\"org.apache.log4j.PatternLayout\">\r\n");                s.append("          <param name=\"ConversionPattern\" value=\"%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n\" />\r\n");                s.append("      </layout>\r\n");                s.append("      <filter class=\"org.apache.log4j.varia.LevelRangeFilter\">\r\n");                s.append("          <param name=\"LevelMin\" value=\"DEBUG\"/>\r\n");                s.append("          <param name=\"LevelMax\" value=\"INFO\"/>\r\n");                s.append("      </filter>\r\n");                s.append("  </appender>\r\n");                s.append("\r\n");                s.append("\r\n");                s.append("  <appender name=\"STDERR\" class=\"org.apache.log4j.ConsoleAppender\">\r\n");                s.append("      <param name=\"Target\" value=\"System.err\" />\r\n");                s.append("      <layout class=\"org.apache.log4j.PatternLayout\">\r\n");                s.append("          <param name=\"ConversionPattern\" value=\"%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n\" />\r\n");                s.append("      </layout>\r\n");                s.append("      <filter class=\"org.apache.log4j.varia.LevelRangeFilter\">\r\n");                s.append("          <param name=\"LevelMin\" value=\"WARN\"/>\r\n");                s.append("          <param name=\"LevelMax\" value=\"FATAL\"/>\r\n");                s.append("      </filter>\r\n");                s.append("  </appender>\r\n");                s.append("\r\n");                s.append("\r\n");                s.append("  <logger name=\"org.jpxx.mail\" additivity=\"true\">\r\n");                s.append("      <appender-ref ref=\"rollingFileAppender\" />\r\n");                s.append("  </logger>\r\n");                s.append("  <root>\r\n");                s.append("      <level value=\"all\" />\r\n");                s.append("      <appender-ref ref=\"STDOUT\" />\r\n");                s.append("      <appender-ref ref=\"STDERR\" />\r\n");                s.append("  </root>\r\n");                s.append("</log4j:configuration>\r\n");                FileOutputStream fos = new FileOutputStream(f);                Writer out = new OutputStreamWriter(fos, "UTF-8");                out.write(s.toString());                out.close();            } catch (IOException ex) {            }        }        DOMConfigurator.configure(Constants.LOG4J_FILE_PATH);        /**         * Check temp dir exist or not.         */        f = new File(Constants.TEMP_DIR);        if (!f.exists()) {            f.mkdirs();        }    }    // </editor-fold>}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -