Не удалось получить свойства из system.properties на странице сервлета

Я пытаюсь получить свойства из файла system.properties, который выглядит так:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/stud_mng" 
duser="root"
dpass=""
logfile=d:/log/test_log.txt

Я также сопоставил этот файл в своем web.xml следующим образом:

<servlet>
    <description>
        This is the description of my J2EE component
    </description>
    <display-name>
        This is the display name of my J2EE component
    </display-name>

    <servlet-name>InitServlet</servlet-name>
    <servlet-class>com.dts.core.util.InitServlet</servlet-class>

    <init-param>
        <param-name>config</param-name>
        <param-value>/WEB-INF/config/system.properties</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>InitServlet</servlet-name>
    <url-pattern>/initservlet</url-pattern>
</servlet-mapping>

Теперь возникла проблема с файлом InitServlet.java, отсюда я пытаюсь получить свойства system.properties, которые сохраняются в папке конфигурации. Вот код, который выдает исключение из строки props.load(fis);, я публикую исключение из нескольких строк и структуру дерева папок -

package com.dts.core.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;

import com.dts.core.dao.AbstractDataAccessObject;
import com.dts.core.db.DBFactory;

public class InitServlet extends HttpServlet
{
    AbstractDataAccessObject dobject;

    public void init(ServletConfig sc)
    {
        ServletContext ctx = sc.getServletContext();
        InputStream fis = ctx.getResourceAsStream(sc.getInitParameter("config"));
        Properties props = new Properties();

        try
        {
            props.load(fis);
        }
        catch (IOException ioe)
        {
            ioe.printStackTrace();
        }
        dobject = new AbstractDataAccessObject();
        dobject.setProperties(props);

27 марта 2016 г. 1:06:30 org.apache.catalina.core.StandardContext loadOnStartup СЕРЬЕЗНО: Servlet /MobileServices вызвало исключение load() java.lang.NullPointerException в java.util.Properties$LineReader.readLine(Properties.java: 434) в java.util.Properties.load0(Properties.java:353) в java.util.Properties.load(Properties.java:341) в com.dts.core.util.InitServlet.init(InitServlet.java:26) ) в org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280) в org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193) в org.apache.catalina.core.StandardWrapper. load(StandardWrapper.java:1088) в org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5176) в org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5460) в org.apache .catalina.util.LifecycleBase.start(LifecycleBase.java:150) ......

Структура каталогов проекта

Также мне интересно, почему папка файла конфигурации создается в проектах Netbeans. Могу ли я использовать эту папку для хранения моего файла system.properties, если да, то отсюда, как я получу свойства. Посмотрите на изображение папки, о которой я говорю - выделите розовым цветом

Я буду очень благодарен за любое предложение/руководство/совет.


person Amit Roy    schedule 27.03.2016    source источник
comment
вы проверили это stackoverflow.com/questions/9892480/?   -  person Deendayal Garg    schedule 27.03.2016
comment
@DeendayalGarg, что особенного написано в сообщении, в котором вы упоминаете тот же код решения. Есть ли разница в моем коде и в принятом коде решения.   -  person Amit Roy    schedule 27.03.2016
comment
Вы пытались выполнить отладку и посмотреть, каково значение sc.getInitParameter(config)?   -  person Deendayal Garg    schedule 27.03.2016
comment
@DeendayalGarg да, я получаю значения из файла конфигурации. Вот код System.out.println(fileName); props.load(fis); System.out.println(props.getProperty("url")); и это вывод ›/WEB-INF/config/system.properties ›jdbc:mysql://localhost:3306/stud_mng   -  person Amit Roy    schedule 27.03.2016
comment
@DeendayalGarg Но теперь, после решения этой проблемы, я столкнулся с этой проблемой. ПРЕДУПРЕЖДЕНИЕ: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver java.lang.ClassNotFoundException: com.mysql.jdbc.Driver, я добавил драйвер MySQL в папку библиотеки. проекта все еще получает эту ошибку   -  person Amit Roy    schedule 27.03.2016
comment
Вы делаете это неправильно. Ресурс должен быть объявлен как таковой, без вашего контекста, xml, а не в файле .properties. И файл .propertties — это не то же самое, что системные свойства.   -  person user207421    schedule 27.03.2016


Ответы (1)


Я нашел ошибку и исправил ее. Это глупая ошибка. Как видите, в моем основном посте я дал код system.properties, подобный этому

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/stud_mng" 
duser="root"
dpass=""
logfile=d:/log/test_log.txt

в приведенном выше коде есть 2 ошибки

1. url=jdbc:mysql://localhost:3306/stud_mng" 

и

2. dpass=""

Я заменяю эти 2 строки -

url=jdbc:mysql://localhost:3306/stud_mng" 
dpass=

И проект работает отлично.

Пусть это поможет любому.

person Amit Roy    schedule 27.03.2016