001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one
003: * or more contributor license agreements. See the NOTICE file
004: * distributed with this work for additional information
005: * regarding copyright ownership. The ASF licenses this file
006: * to you under the Apache License, Version 2.0 (the
007: * "License"); you may not use this file except in compliance
008: * with the License. You may obtain a copy of the License at
009: *
010: * http://www.apache.org/licenses/LICENSE-2.0
011: *
012: * Unless required by applicable law or agreed to in writing,
013: * software distributed under the License is distributed on an
014: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015: * KIND, either express or implied. See the License for the
016: * specific language governing permissions and limitations
017: * under the License.
018: */
019:
020: package org.apache.axis2.transport.mail.server;
021:
022: import org.apache.axis2.AxisFault;
023: import org.apache.axis2.context.ConfigurationContext;
024: import org.apache.axis2.context.ConfigurationContextFactory;
025: import org.apache.axis2.transport.mail.Constants;
026: import org.apache.commons.logging.Log;
027: import org.apache.commons.logging.LogFactory;
028:
029: public class MailServer {
030: private static final Log log = LogFactory.getLog(MailServer.class);
031: Storage st = null;
032: public ConfigurationContext configurationContext = null;
033: private POP3Server pop3Server;
034: private SMTPServer smtpServer;
035:
036: public MailServer(int popPort, int smtpPort) throws AxisFault {
037: st = new Storage();
038:
039: // Start up the two servers and lets have some fun. - CT
040: smtpServer = new SMTPServer(st, smtpPort);
041: smtpServer.start();
042: pop3Server = new POP3Server(st, popPort);
043: pop3Server.start();
044: try {
045: log
046: .info("Sleeping for a bit to let the mail server start up.");
047: Thread.sleep(2000);
048: } catch (InterruptedException e1) {
049: log.error(e1.getMessage(), e1);
050: }
051: }
052:
053: public MailServer(ConfigurationContext configurationContext,
054: int popPort, int smtpPort) throws AxisFault {
055: this .configurationContext = configurationContext;
056:
057: st = new Storage();
058:
059: // Start up the two servers and lets have some fun. - CT
060: smtpServer = new SMTPServer(st, configurationContext, smtpPort);
061: smtpServer.start();
062: pop3Server = new POP3Server(st, popPort);
063: pop3Server.start();
064: try {
065: log
066: .info("Sleeping for a bit to let the mail server start up.");
067: Thread.sleep(2000);
068: } catch (InterruptedException e1) {
069: log.error(e1);
070: }
071: }
072:
073: public MailServer(String dir, int popPort, int smtpPort)
074: throws AxisFault {
075: try {
076: configurationContext = ConfigurationContextFactory
077: .createConfigurationContextFromFileSystem(dir, null);
078: } catch (Exception e) {
079: log.error(e.getMessage(), e);
080: }
081:
082: try {
083: log.info("Sleeping for a bit to let the engine start up.");
084: Thread.sleep(2000);
085: } catch (InterruptedException e1) {
086: log.error(e1.getMessage(), e1);
087: }
088:
089: st = new Storage();
090:
091: // Start up the two servers and lets have some fun. - CT
092: smtpServer = new SMTPServer(st, configurationContext, smtpPort);
093: smtpServer.start();
094: pop3Server = new POP3Server(st, popPort);
095: pop3Server.start();
096: try {
097: log.info("Sleeping for a bit to let the engine start up.");
098: Thread.sleep(2000);
099: } catch (InterruptedException e1) {
100: log.error(e1.getMessage(), e1);
101: }
102: }
103:
104: public static void main(String args[]) {
105: int smtpPost = Constants.SMTP_SERVER_PORT;
106: int popPort = Constants.POP_SERVER_PORT;
107:
108: if (args.length == 2) {
109: try {
110: smtpPost = Integer.parseInt(args[0]);
111: popPort = Integer.parseInt(args[1]);
112: } catch (NumberFormatException e1) {
113: log.info("Error in parsing the custom ports.");
114: }
115: } else {
116: log.info("Usage MailServer <SMTP_PORT> <POP_PORT>");
117: log
118: .info("Using 1134 as the SMTP port and 1049 as the POP port");
119: }
120:
121: try {
122: new MailServer(popPort, smtpPost);
123: } catch (AxisFault e) {
124: log.info(e.getMessage());
125: }
126: }
127:
128: public void stop() throws AxisFault {
129: smtpServer.stopServer();
130: pop3Server.stopServer();
131: try {
132: log.info("Giving some time for the sockets to close.");
133: Thread.sleep(2000);
134: } catch (InterruptedException e1) {
135: log.error(e1.getMessage(), e1);
136: }
137: }
138: }
|