Código de inicialización “Servlet” (lado del servidor) en GWT

¿Cómo puedo tener una inicialización única en el servidor de la aplicación GWT?

Quizás esté pensando en HttpServlet donde puedes anular init() , pero los viejos hábitos HttpServlet en perderse;)

Lo que estoy tratando de hacer es:

  • cargar un montón de propiedades

  • establecer una conexión a la base de datos

Puede agregar como se menciona en un comentario un ServletContextListener .

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

Ahora ponga la nueva clase en el lado del servidor, también debe registrar el Listener en su archivo web.xml:

  path.to.class.ServerConfig  

cargar un montón de propiedades?

Registre ServletContextListener para cargar los parámetros Init al inicio del servidor.

Cargue las propiedades y hágalas visibles para otras clases estáticamente.

Ya publiqué un código de muestra Recuperar parámetros de inicio fuera del servlet


establecer una conexión a la base de datos?

Use JNDI para enlazar la fuente de datos.

Utilice la clase Connection Utility para obtener la conexión y cerrar la conexión tan pronto como esté listo.

Aquí está el código de ejemplo.

 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; } } 

Si está utilizando JBOSS in standalone mode . Luego solo haga algunas entradas en standalone.xml para crear una fuente de datos. Simplemente actualice parte de su valor según la conexión de su base de datos, como connection-url , user-name y password .

En este caso, JNDI_LOOKUP_NAME será java:jboss/datasources/oracle

  jdbc:oracle:thin:@ipaddress:1521/sid oracle select * from dual  20 50 true   username password   select * from dual true   30000 1 60 1