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>