Параметр инициализации в GWT для подключения к базе данных - PullRequest
1 голос
/ 25 мая 2011

Я работаю над установлением соединения с базой данных в моем приложении GWT с MySQL.Я хочу, чтобы база данных считала набор параметров 'init', так что мне не нужно "вручную кодировать" URL БД и имена пользователей и пароли.Некоторое время я гуглял на предмет возможных решений, но был немного ошеломлен возможными решениями.Некоторые из них говорили о JNDI как о решении, но нигде не ясно, как это сделать.

Более того, отличия в запуске вашего приложения из Eclipse в режиме разработки / отладки (в Jetty) и, наконец, в его развертывании в TomcatВ дальнейшем меня смущает.

Можно ли указать набор параметров инициализации в web.xml?Как я могу их прочитать?

Если будет использоваться JNDI?Могу ли я получить пошаговое краткое изложение того, как решить эту задачу?

1 Ответ

1 голос
/ 25 мая 2011

Требуется настройка контекста веб-приложения -

Чтобы добавить информацию о базе данных в контекст веб-приложения

Для настройки Jetty вам также понадобится использовать конфигурацию jetty-web.xml -

Чтобы установить соединение в вашем приложении, на стороне сервера используйте следующее -

        Context ctx = new InitialContext();

        DataSource  ds = (DataSource) ctx.lookup("java:comp/env/{Res Name in context.xml}");
        Connection conn = ds.getConnection();

ПРИМЕЧАНИЕ - чтобы ваше приложение работало как с jetty, так и с tomcat, запомните оба файла и убедитесь, что ваше имя ресурса -

context.xml : {resourceName}

jetty-web.xml: java:comp/env/{resourceName}

Не уверен, что jetty-web.xml будет работать только с {resourcename} тоже

EDIT - образец кода context.xml -

<Resource name="jdbc/myDatabaseServer" auth="Container" type="javax.sql.DataSource"
    maxActive="100" maxIdle="30" maxWait="10000" username="USER"
    password="PWD" driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://myUrl:3306/myDB?autoReconnect=true" removeAbandoned="true"
    removeAbandonedTimeout="60" logAbandoned="true" autoReconnect="true" validationQuery="select 1" testOnBorrow="true"
    testOnReturn="true" testWhileIdle="true" timeBetweenEvictionRunsMillis="1800000"
    numTestsPerEvictionRun="3" minEvictableIdleTimeMillis="1800000"/>

Тот же пример кода jetty-web.xml -

<New id="someid" class="org.mortbay.jetty.plus.naming.Resource">
    <Arg>java:comp/env/jdbc/myDatabaseServer</Arg>
    <Arg>
        <New class="org.apache.commons.dbcp.BasicDataSource">
            <Set name="driverClassName">com.mysql.jdbc.Driver</Set>
            <Set name="url">jdbc:mysql://myUrl:3306/myDB?autoReconnect=true</Set>
            <Set name="username">USER</Set>
            <Set name="password">PWD</Set>
            <Set name="maxActive">100</Set>
            <Set name="maxIdle">30</Set>
            <Set name="minIdle">0</Set>
            <Set name="maxWait">10000</Set>
            <Set name="minEvictableIdleTimeMillis">1800000</Set>
            <Set name="timeBetweenEvictionRunsMillis">1800000</Set>
            <Set name="numTestsPerEvictionRun">3</Set>
            <Set name="testOnBorrow">true</Set>
            <Set name="testWhileIdle">true</Set>
            <Set name="testOnReturn">true</Set>
            <Set name="validationQuery">SELECT 1</Set>
        </New>
    </Arg>
</New>

Вы можете прочитать, что означает каждый раздел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...