tutorial showcase google framework examples ejemplos java gwt

showcase - gwt java tutorial



Código de inicialización "Servlet"(lado del servidor) en GWT (2)

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:

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

¿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


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 ejemplo 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

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