Как найти путь к файлу .txt в glassfish v3.0 - PullRequest
0 голосов
/ 09 марта 2011

В моей заявке я хочу отправить HTML-шаблон на электронную почту пользователей. Everithing работает правильно, когда я программно создаю HTML, но сейчас я хочу прочитать текст HTML из файла в моем приложении и отправить его. Я получаю FileNotFoundException, и я не знаю, как найти этот файл .txt. Смотрите код:

public void sendAccountActivationLinkToBuyer(String destinationEmail,
        String name) {

    // Destination of the email
    String to = destinationEmail;
    String from = "myEmail@gmail.com";

    try {
        Message message = new MimeMessage(mailSession);
        // From: is our service
        message.setFrom(new InternetAddress(from));
        // To: destination given
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse(to));
        message.setSubject("Registration succeded");
        // Instead of simple text, a .html template should be added here!
        message.setText(generateActivationLinkTemplate());

        Date timeStamp = new Date();
        message.setSentDate(timeStamp);

        Transport.send(message);

    } catch (MessagingException e) {
        throw new RuntimeException(e);
    }

}

private String generateActivationLinkTemplate() {
    String htmlText = "";

    try {
        File f = new File("");
        BufferedReader br = new BufferedReader(new InputStreamReader(f.getClass().getResourceAsStream("./web/emailActivationTemplate.txt")));
        String content = "";
        String line = null;

        while ((line = br.readLine()) != null) {
            content += line;
        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return htmlText;
}

Второй метод вызывает у меня проблемы, я не могу найти этот .txt файл. Что я должен делать? Я создал папку web внутри папки WebContent, теперь она находится рядом с META-INF и WEB-INF (я думаю, что это подходящее место для хранения моих изображений, шаблонов, css ...) Внутри папки я вручную вставил emailActivationTemplate.txt Теперь мне нужно прочитать с него. Есть идеи?

Это вывод консоли:

SEVERE: java.io.FileNotFoundException:. \ Web \ emailActivationTemplate.txt (система не может найти указанный путь)

Ответы [ 3 ]

3 голосов
/ 09 марта 2011

Поместите emailActivationTemplate.txt в WEB-INF / classes и получите его с помощью

BufferedReader br = new BufferedReader(new InputStreamReader(Thread.currentThread().getContextClassLoader().getResource("emailActivationTemplate.txt"));
3 голосов
/ 13 марта 2013
(String) System.getProperties().get("com.sun.aas.instanceRoot")
1 голос
/ 09 марта 2011

Ваш emailActivationTemplate.txt должен присутствовать в папке classes WEB-INF.Если вам удастся разместить его там, вы сможете прочитать его, используя:

BufferedReader br = new BufferedReader(new InputStreamReader(this.getClass().getClassLoader().getResourceAsStream("/emailActivationTemplate.txt")));

Попробуйте без начального '/', если он не работает.

...