GWT中的“Servlet”(服务器端)初始化代码

我怎样才能在GWT应用程序的服务器端进行一次初始化?

我可能会想到很像HttpServlet在哪里可以重写init() ,但旧的习惯很久就会失去;)

我想要做的是:

  • 加载一堆属性

  • build立到数据库的连接

你可以添加像在一个ServletContextListener注释中提到的。

 public class ServerConfig implements ServletContextListener { public void contextInitialized(ServletContextEvent event) { // Do stuff on startup. } public void contextDestroyed(ServletContextEvent event) { // Do stuff on shutdown. } } 

现在把新的类放在服务器端,你也可以在你的web.xml文件中注册Listener:

 <listener> <listener-class>path.to.class.ServerConfig</listener-class> </listener> 

加载一堆属性?

注册ServletContextListener以在服务器启动时加载Init参数。

加载属性并使其对静态的其他类可见。

我已经发布了一个示例代码在servlet外部检索Init参数


build立到数据库的连接?

使用JNDI来绑定数据源。

使用Connection Utility类来获取连接,并尽快closures连接。

这里是示例代码。

 import java.sql.Connection; import java.sql.SQLException; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; import com.woodmac.datavisualizer.shared.DVConstants; public class ConnectionUtil { private DataSource dataSource; private static ConnectionUtil instance = new ConnectionUtil(); private ConnectionUtil() { try { Context initContext = new InitialContext(); dataSource = (DataSource) initContext.lookup(JNDI_LOOKUP_NAME); } catch (NamingException e) { e.printStackTrace(); } } public static ConnectionUtil getInstance() { return instance; } public Connection getConnection() throws SQLException { Connection connection = dataSource.getConnection(); return connection; } public void close(Connection connection) throws SQLException { if (connection != null && !connection.isClosed()) { connection.close(); } connection = null; } } 

如果您JBOSS in standalone mode使用JBOSS in standalone mode 。 然后在standalone.xml做一些条目来创build一个数据源。 只需根据您的数据库连接(如connection-urluser-namepassword更新它的一些值password

在这种情况下,JNDI_LOOKUP_NAME将是java:jboss/datasources/oracle

 <datasource jta="true" jndi-name="java:jboss/datasources/oracle" pool-name="OracleDS" enabled="true" use-java-context="true" use-ccm="true"> <connection-url>jdbc:oracle:thin:@ipaddress:1521/sid</connection-url> <driver>oracle</driver> <new-connection-sql>select * from dual</new-connection-sql> <pool> <min-pool-size>20</min-pool-size> <max-pool-size>50</max-pool-size> <prefill>true</prefill> </pool> <security> <user-name>username</user-name> <password>password</password> </security> <validation> <check-valid-connection-sql>select * from dual</check-valid-connection-sql> <background-validation>true</background-validation> </validation> <timeout> <blocking-timeout-millis>30000</blocking-timeout-millis> <idle-timeout-minutes>1</idle-timeout-minutes> <use-try-lock>60</use-try-lock> <allocation-retry>1</allocation-retry> </timeout> </datasource>