1

Windowsデスクトップからコマンドラインを実行するための小さなファイルユーティリティクラスを作成する必要がありました。コードは完成しましたが、パッケージ化の方法を確認した後、実行するにはメインアプリケーションのカスタムフレームワークが必要です。答えるのに時間がかかるので、理由を尋ねないでください。これを有効な仮定として考えてください。

いずれにせよ、今ではjspがこのクラスを呼び出すことを望んでいますが、それでもメインコードベースの一部であるにもかかわらず、それをより別個のユーティリティにすることを望んでいます。また、ユーティリティのmainメソッドを呼び出すことも望んでいます。これは、私には良い設計とは思えませんが、サーブレットクラスに変更することは望んでいませんでした。

プログラムはいくつかの引数を取り、それから基本的にファイルのワンステップ操作で終了します。実際にはjspタイプの要求/応答シナリオではありませんが、要件を作成しているのは私ではありません。

設計の観点から、単純なユーティリティアプリケーションでこれを行うためのより良い方法はありますか?

ありがとう、

ジェームズ

4

3 に答える 3

3

本当にデザインを変更できない場合は、クラスをインポートして呼び出すことができます(これは、Webアプリのクラスパスにある場合にのみ機能します)。

YourMainClass.main(new String[] {"some", "arguments"});

または、プロセスを生成して実行します(新しいプロセスは、サーバーが現在使用しているのと同じ量のメモリを別の束に割り当てるため、これは実際には推奨されません)。

Runtime.getRuntime().exec("java -cp /path/to/root com.example.YourMainClass some arguments");

どちらの方法も、スクリプトレット(yuck)で実行することも、できればサーブレットで実行することもできます。

于 2011-09-22T15:42:04.587 に答える
2

メソッドmainにサービス/ライブラリメソッドを呼び出させます。JSPは同じサービス/ライブラリメソッドを呼び出すことができます。明示的に呼び出す必要はありませんmain; 最初からきれいにしてください。

于 2011-09-22T15:42:57.693 に答える
0

T**これは私のJavaMail.java**です。これはメインメソッドを含むjavaクラスです。

Public Class JavaMAil{
String d_email = "abc@gmail.com",//you email address
        d_password = "XXXX", //your email password
        d_host = "smtp.gmail.com",
        d_port = "465",
        m_to = "xyz@gmail.com    ", // Target email address
        m_subject = "Testing",
        m_text = "Hey, this is a test email.";



public JavaMail() {
    Properties props = new Properties();
    props.put("mail.smtp.user", d_email);
    props.put("mail.smtp.host", d_host);
    props.put("mail.smtp.port", d_port);
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.auth", "true");
    //props.put("mail.smtp.debug", "true");
    props.put("mail.smtp.socketFactory.port", d_port);
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.socketFactory.fallback", "false");
    try {
        SMTPAuthenticator auth = new SMTPAuthenticator();
        Session session = Session.getInstance(props, auth);     
        MimeMessage msg = new MimeMessage(session);
        msg.setText(m_text);
        msg.setSubject(m_subject);
        msg.setFrom(new InternetAddress(d_email));
        msg.addRecipient(Message.RecipientType.TO, new InternetAddress(m_to));
        Transport.send(msg);
    } catch (Exception mex) {
        mex.printStackTrace();
    }
}

public static void main(String[] args) {
    JavaMail blah = new JavaMail();
}

private class SMTPAuthenticator extends javax.mail.Authenticator {
    public PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(d_email, d_password);
    }
}

}

**This is my mail.jsp**

And It is jsp it Invokes Main method from the class called JavaMail




<%@ page import="mail.JavaMail" %>
<%
JavaMail obj = new JavaMail();
%>
于 2014-05-26T07:19:30.727 に答える