[jboss-cvs] JBoss Messaging SVN: r6400 - in trunk: examples/javaee/ejb-jms-transaction and 5 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Apr 10 11:29:25 EDT 2009
Author: jmesnil
Date: 2009-04-10 11:29:25 -0400 (Fri, 10 Apr 2009)
New Revision: 6400
Added:
trunk/examples/javaee/ejb-jms-transaction/config/mysql-ds.xml
Modified:
trunk/.classpath
trunk/examples/javaee/ejb-jms-transaction/
trunk/examples/javaee/ejb-jms-transaction/readme.html
trunk/examples/javaee/ejb-jms-transaction/src/org/jboss/javaee/example/EJBClientExample.java
trunk/examples/javaee/ejb-jms-transaction/src/org/jboss/javaee/example/server/SendMessageBean.java
trunk/examples/javaee/ejb-jms-transaction/src/org/jboss/javaee/example/server/SendMessageService.java
trunk/examples/jms/common/common.css
trunk/examples/jms/common/src/org/jboss/jms/example/JMSExample.java
Log:
Java EE EJB/JMS Transaction Example
* added example showing how to use JMS and JDBC resources in an EJB
Modified: trunk/.classpath
===================================================================
--- trunk/.classpath 2009-04-10 11:12:02 UTC (rev 6399)
+++ trunk/.classpath 2009-04-10 15:29:25 UTC (rev 6400)
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry excluding="**/.svn/**/*" kind="src" path="src/main"/>
- <classpathentry kind="src" path="examples/jms/xa-transaction/src"/>
<classpathentry kind="src" path="build/src"/>
<classpathentry kind="src" path="tests/jms-tests/config"/>
<classpathentry kind="src" path="tests/config"/>
@@ -40,6 +39,8 @@
<classpathentry kind="src" path="examples/jms/topic-selector-example2/src"/>
<classpathentry kind="src" path="examples/jms/transactional/src"/>
<classpathentry kind="src" path="examples/jms/management/src"/>
+ <classpathentry kind="src" path="examples/javaee/ejb-jms-transaction/src"/>
+ <classpathentry kind="src" path="examples/javaee/mdb/src"/>
<classpathentry kind="lib" path="thirdparty/apache-log4j/lib/log4j.jar"/>
<classpathentry kind="lib" path="thirdparty/junit/lib/junit.jar"/>
<classpathentry kind="lib" path="thirdparty/jboss/profiler/jvmti/lib/jboss-profiler-jvmti.jar"/>
Property changes on: trunk/examples/javaee/ejb-jms-transaction
___________________________________________________________________
Name: svn:ignore
+ build
Added: trunk/examples/javaee/ejb-jms-transaction/config/mysql-ds.xml
===================================================================
--- trunk/examples/javaee/ejb-jms-transaction/config/mysql-ds.xml (rev 0)
+++ trunk/examples/javaee/ejb-jms-transaction/config/mysql-ds.xml 2009-04-10 15:29:25 UTC (rev 6400)
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- $Id: mysql-ds.xml 41017 2006-02-07 14:26:14Z acoliver $ -->
+<!-- Datasource config for MySQL using 3.0.9 available from:
+http://www.mysql.com/downloads/api-jdbc-stable.html
+-->
+
+<datasources>
+ <xa-datasource>
+ <jndi-name>XADS</jndi-name>
+ <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
+ <xa-datasource-property name="URL">jdbc:mysql://localhost:3306/jbossdb</xa-datasource-property>
+ <user-name>jboss</user-name>
+ <password>jboss</password>
+ <track-connection-by-tx>true</track-connection-by-tx>
+ <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
+ <metadata>
+ <type-mapping>mySQL</type-mapping>
+ </metadata>
+ </xa-datasource>
+
+ <local-tx-datasource>
+ <jndi-name>DefaultDS</jndi-name>
+ <connection-url>jdbc:mysql://localhost:3306/jbossdb</connection-url>
+ <driver-class>com.mysql.jdbc.Driver</driver-class>
+ <user-name>jboss</user-name>
+ <password>jboss</password>
+ <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
+ <!-- should only be used on drivers after 3.22.1 with "ping" support
+ <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>
+ -->
+ <!-- sql to call when connection is created
+ <new-connection-sql>some arbitrary sql</new-connection-sql>
+ -->
+ <!-- sql to call on an existing pooled connection when it is obtained from pool - MySQLValidConnectionChecker is preferred for newer drivers
+ <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
+ -->
+
+ <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
+ <metadata>
+ <type-mapping>mySQL</type-mapping>
+ </metadata>
+ </local-tx-datasource>
+</datasources>
+
Modified: trunk/examples/javaee/ejb-jms-transaction/readme.html
===================================================================
--- trunk/examples/javaee/ejb-jms-transaction/readme.html 2009-04-10 11:12:02 UTC (rev 6399)
+++ trunk/examples/javaee/ejb-jms-transaction/readme.html 2009-04-10 15:29:25 UTC (rev 6400)
@@ -1,10 +1,227 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<head>
- <title></title>
-</head>
-<body>
+ <head>
+ <title>JBoss Messaging EJB/JMS Transaction Example</title>
+ <link rel="stylesheet" type="text/css" href="../../jms/common/common.css">
+ </head>
+ <body>
+ <h1>EJB/JMS Transaction Example</h1>
+
+ <p>This example will show how to run JBoss Messaging in JBoss AS (Application Server).</p>
-</body>
+ <p>The example application will invoke an EJB which will (1) send a JMS message, (2) update a database from
+ the same transaction.<br />
+ The example application will then receive the message sent by the EJB.<br />
+ We will also check that the database has been updated as expected.</p>
+
+ <h2>Example configuration</h2>
+
+ <p>To run the example, you need to download JBoss AS 5.x and create a configuration for JBoss Messaging.</p>
+ <p>The example also requires a database. The instructions are for MySQL. If you use another database, please refer
+ to the database documentation to configure it.</p>
+
+
+ <h3>JBoss AS configuration</h3>
+
+ <p>Please refer to JBoss Messaging documentation to deploy it for JBoss AS 5 <span class="missing-doc">add a link to the doc</span></p>
+
+ <h3>Database configuration</h3>
+
+ <p>This example needs a database supporting XA transactions. The instructions are written for <a href="http://dev.mysql.com/">MySQL</a>. Please refer to your
+ database documentation to configure it appropriately.</p>
+ <p>To use MySQL with JBoss AS 5</p>
+ <ul>
+ <li>remove HSQLDB configuration from jbm2_default deployment</li>
+ <pre>
+ <code>rm $JBOSS_HOME/server/jbm2_default/deploy/hsqldb-ds.xml</code>
+ </pre>
+ <li>copy <a href="config/mysql-ds.xml">mysql-ds.xml</a> to <code>$JBOSS_HOME/server/jbm2_default/deploy/</code></li>
+ <li>copy MySQL JDBC jar to <code>$JBOSS_HOME/server/jbm2_default/lib/</code></li>
+ </ul>
+
+ <p>MySQL is configured to connect to a <code>jbossdb</code> database using the <code>jboss</code>/<code>jboss</code> credentials
+ <p>MySQL configuration file defines two DataSources:</p>
+ <ul>
+ <li><code>DefaultDS</code>, the default DataSource (used to create a table from the example)</li>
+ <li><code>XADS</code>, the XA DataSource. This datasource will be used to send a JMS message and update the table within the same transaction</li>
+ </ul>
+
+ <h2>Example step-by-step</h2>
+
+ <p><em>To deploy the example, type <code>ant deploy</code> from this directory</em>.</p>
+ <p><em>Once the example is deployed in JBoss AS 5, type <code>ant</code> to run the example</em>.</p>
+ <p><em>Type <code>ant undeploy</code> to undeploy the example from JBoss AS 5</em>.</p>
+
+ The example code is composed of two main classes:
+ <ul>
+ <li><code>EJBExample</code></li> - the example application
+ <li><code>SendMessageBean</code></li> - a Stateless EJB
+ </ul>
+
+ <h3>Example Application</h3>
+
+ <p>Let's take a look at EJBClientExample first.</p>
+
+ <ol>
+ <li>First we need to get an initial context so we can look-up the JMS connection factory and destination objects from JNDI. This initial context will get it's properties from the <a href="config/jndi.properties">jndi.properties</a></li>
+ </li>
+ <pre>
+ <code>InitialContext initialContext = new InitialContext();</code>
+ </pre>
+
+ <li>We look up the EJB</li>
+ <pre>
+ <code>SendMessageService service = (SendMessageService)initialContext.lookup("mdb-example/SendMessageBean/remote");</code>
+ </pre>
+
+ <li>We create the DB table which will be updated if it does not already exist</li>
+ <pre>
+ <code>service.createTable();</code>
+ </pre>
+
+ <li>We invoke the EJB's <code>sendAndUpdate</code> method. This method will send a JMS text message (with the text passed in parameter)
+ and insert a row in the database table with the text and the message's JMS Message ID</li>
+ <pre>
+ <code>service.sendAndUpdate("This is a text message");</code>
+ </pre>
+
+ <p><em>We will now consume the JMS message which was sent by the EJB at step 4.</em></p>
+
+ <li>We look up the JMS connection factory</li>
+ <pre>
+ <code>ConnectionFactory cf = (ConnectionFactory)initialContext.lookup("/ConnectionFactory");</code>
+ </pre>
+
+ <li>We lookup the JMS queue</li>
+ <pre>
+ <code>Queue queue = (Queue)initialContext.lookup("queue/testQueue");</code>
+ </pre>
+
+ <li>We create a connection, a session and a message consumer for the queue</li>
+ <pre>
+ <code>connection = cf.createConnection();
+ Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ MessageConsumer consumer = session.createConsumer(queue);</code>
+ </pre>
+
+ <li>We start the JMS connection</li>
+ <pre>
+ <code>connection.start();</code>
+ </pre>
+
+ <li>We receive a message from the queue. It corresponds to the message sent by the EJB</li>
+ <pre>
+ <code>TextMessage messageReceived = (TextMessage)consumer.receive(5000);
+ System.out.println("Received message: " + messageReceived.getText() +
+ " (" + messageReceived.getJMSMessageID() + ")");
+ </code>
+ </pre>
+
+ <li>And finally, <b>always</b> remember to close your JMS connections and resources after use, in a <code>finally</code> block. Closing a JMS connection will automatically close all of its sessions, consumers, producer and browser objects</li>
+
+ <pre>
+ <code>finally
+ {
+ if (initialContext != null)
+ {
+ initialContext.close();
+ }
+ if (connection != null)
+ {
+ connection.close();
+ }
+ }</code>
+ </pre>
+ </ol>
+
+ <h3>EJB Example</h3>
+
+ <p>Let's now take a look at the EJB example</p>
+
+ <ol>
+ <li>First, we create a new initial context</li>
+ <pre>
+ <code>ic = new InitialContext();</code>
+ </pre>
+
+ <li>We look up the JMS <em>XA</em> Connection Factory (which is bound to <code>java:/JmsXA</code>)</li>
+ <pre>
+ <code>ConnectionFactory cf = (ConnectionFactory)ic.lookup("java:/JmsXA");</code>
+ </pre>
+
+ <li>We look up the JMS Queue</li>
+ <pre>
+ <code>Queue queue = (Queue)ic.lookup("queue/testQueue");</code>
+ </pre>
+
+ <li>We create a JMS connection, a session and a message producer for the queue</li>
+ <pre>
+ <code>jmsConnection = cf.createConnection();
+ Session session = jmsConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ MessageProducer messageProducer = session.createProducer(queue);</code>
+ </pre>
+
+ <li>We create a text message with the text passed in parameter of the EJB method</li>
+ <pre>
+ <code>TextMessage message = session.createTextMessage(text);</code>
+ </pre>
+
+ <li>We send the message to the queue</li>
+ <pre>
+ <code>messageProducer.send(message);
+ System.out.println("Sent message: " + message.getText() + "(" + message.getJMSMessageID() + ")");</code>
+ </pre>
+
+ <li>We now lookup the JDBC <em>XA</em> DataSource</li>
+ <pre>
+ <code>DataSource ds = (DataSource)ic.lookup("java:/XADS");</code>
+ </pre>
+
+ <li>We retrieve a JDBC connection</li>
+ <pre>
+ <code>jdbcConnection = ds.getConnection();</code>
+ </pre>
+
+ <li>We create a prepared statement to insert the text and message's ID in the DB table</li>
+ <pre>
+ <code>PreparedStatement pr = jdbcConnection.prepareStatement("INSERT INTO " + TABLE
+ + " (id, text) VALUES ('" + message.getJMSMessageID() + "', '" + text + "');");</code>
+ </pre>
+
+ <li>We execute the prepared statement</li>
+ <pre>
+ <code>pr.execute();</code>
+ </pre>
+
+ <li>We close the prepared statement</li>
+ <pre>
+ <code>pr.close();</code>
+ </pre>
+
+ <li>And finally, <b>always</b> remember to close all your connections and resources (for both JMS and JDBC) after use, in a <code>finally</code> block.</li>
+ <pre>
+ <code>finally
+ {
+ if (ic != null)
+ {
+ ic.close();
+ }
+ if (jmsConnection != null)
+ {
+ jmsConnection.close();
+ }
+ if (jdbcConnection != null)
+ {
+ jdbcConnection.close();
+ }
+ }</code>
+ </pre>
+
+ <h2>More information</h2>
+
+ <ul>
+ <li><span class="missing-doc">JBoss Messsaging deployment in JBoss AS 5 </span></li>
+ <li><a href="http://www.jboss.org/file-access/default/members/jbossas/freezone/docs/Administration_And_Configuration_Guide/5/html/alternative_DBs.html">Use Alternative Databases with JBoss AS</a></li>
+ </ul>
+
+ </body>
</html>
\ No newline at end of file
Modified: trunk/examples/javaee/ejb-jms-transaction/src/org/jboss/javaee/example/EJBClientExample.java
===================================================================
--- trunk/examples/javaee/ejb-jms-transaction/src/org/jboss/javaee/example/EJBClientExample.java 2009-04-10 11:12:02 UTC (rev 6399)
+++ trunk/examples/javaee/ejb-jms-transaction/src/org/jboss/javaee/example/EJBClientExample.java 2009-04-10 15:29:25 UTC (rev 6400)
@@ -21,26 +21,73 @@
*/
package org.jboss.javaee.example;
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.MessageConsumer;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+import javax.naming.InitialContext;
+
import org.jboss.javaee.example.server.SendMessageService;
-import javax.naming.InitialContext;
-
/**
* @author <a href="mailto:andy.taylor at jboss.org">Andy Taylor</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
*/
public class EJBClientExample
{
public static void main(String[] args) throws Exception
{
- //Step 1. Obtain an Initial Context
- InitialContext ctx = new InitialContext();
+ InitialContext initialContext = null;
+ Connection connection = null;
+ try
+ {
+ // Step 1. Obtain an Initial Context
+ initialContext = new InitialContext();
- //Step 2. Lookup the EJB
- SendMessageService service = (SendMessageService) ctx.lookup("mdb-example/SendMessageBean/remote");
+ // Step 2. Lookup the EJB
+ SendMessageService service = (SendMessageService)initialContext.lookup("mdb-example/SendMessageBean/remote");
- //Step 3. Invoke the send method
- service.send();
+ // Step 3. Create the DB table which will be updated
+ service.createTable();
- //todo receive the message
+ // Step 4. Invoke the sendAndUpdate method
+ service.sendAndUpdate("This is a text message");
+ System.out.println("invoked the EJB service");
+
+ // Step 5. Lookup the JMS connection factory
+ ConnectionFactory cf = (ConnectionFactory)initialContext.lookup("/ConnectionFactory");
+
+ // Step 6. Lookup the queue
+ Queue queue = (Queue)initialContext.lookup("queue/testQueue");
+
+ // Step 7. Create a connection, a session and a message consumer for the queue
+ connection = cf.createConnection();
+ Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ MessageConsumer consumer = session.createConsumer(queue);
+
+ // Step 8. Start the connection
+ connection.start();
+
+ // Step 9. Receive the message sent by the EJB
+ TextMessage messageReceived = (TextMessage)consumer.receive(5000);
+ System.out.println("Received message: " + messageReceived.getText() +
+ " (" +
+ messageReceived.getJMSMessageID() +
+ ")");
+ }
+ finally
+ {
+ // Step 10. Be sure to close the resources!
+ if (initialContext != null)
+ {
+ initialContext.close();
+ }
+ if (connection != null)
+ {
+ connection.close();
+ }
+ }
}
}
Modified: trunk/examples/javaee/ejb-jms-transaction/src/org/jboss/javaee/example/server/SendMessageBean.java
===================================================================
--- trunk/examples/javaee/ejb-jms-transaction/src/org/jboss/javaee/example/server/SendMessageBean.java 2009-04-10 11:12:02 UTC (rev 6399)
+++ trunk/examples/javaee/ejb-jms-transaction/src/org/jboss/javaee/example/server/SendMessageBean.java 2009-04-10 15:29:25 UTC (rev 6400)
@@ -21,6 +21,8 @@
*/
package org.jboss.javaee.example.server;
+import java.sql.PreparedStatement;
+
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.jms.Connection;
@@ -30,58 +32,117 @@
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.InitialContext;
+import javax.sql.DataSource;
/**
* @author <a href="mailto:andy.taylor at jboss.org">Andy Taylor</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
*/
@Stateless
@Remote(SendMessageService.class)
public class SendMessageBean implements SendMessageService
{
- public void send() throws Exception
+
+ private static final String TABLE = "jbm_example";
+
+ public void createTable() throws Exception
{
+ InitialContext ic = new InitialContext();
+ DataSource ds = (DataSource)ic.lookup("java:/DefaultDS");
+ java.sql.Connection con = ds.getConnection();
+
+ // check if the table exists:
+ boolean createTable = false;
+ try {
+ PreparedStatement pr = con.prepareStatement("SELECT * FROM " + TABLE + ";");
+ pr.executeQuery();
+ pr.close();
+ } catch (Exception e)
+ {
+ createTable = true;
+ }
+
+ if (createTable)
+ {
+ PreparedStatement pr = con.prepareStatement("CREATE TABLE " + TABLE + "(id VARCHAR(100), text VARCHAR(100)) TYPE=innodb;");
+ pr.execute();
+ pr.close();
+ System.out.println("Table " + TABLE + " created");
+ }
+
+ con.close();
+ }
+
+ public void dropTable() throws Exception
+ {
+ }
+
+ public void sendAndUpdate(String text) throws Exception
+ {
InitialContext ic = null;
- Connection connection = null;
+ Connection jmsConnection = null;
+ java.sql.Connection jdbcConnection = null
+ ;
try
{
- System.out.println("SendMessageBean.send");
- //Step 4. Lookup the initial context
+ // Step 1. Lookup the initial context
ic = new InitialContext();
- //Step 5. Look Up the XA Connection Factory
- ConnectionFactory cf = (ConnectionFactory) ic.lookup("java:/JmsXA");
+ // JMS operations
+
+ // Step 2. Look up the XA Connection Factory
+ ConnectionFactory cf = (ConnectionFactory)ic.lookup("java:/JmsXA");
- //Step 6. Create a connection
- connection = cf.createConnection();
+ // Step 3. Look up the Queue
+ Queue queue = (Queue)ic.lookup("queue/testQueue");
- //Step 7. Lookup the Queue
- Queue queue = (Queue) ic.lookup("queue/testQueue");
-
- //Step 8. Create a session
- Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-
- //Step 9. Create a Message Producer
+ // Step 4. Create a connection, a session and a message producer for the queue
+ jmsConnection = cf.createConnection();
+ Session session = jmsConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer messageProducer = session.createProducer(queue);
- //Step 10. Create a Text Message
- TextMessage message = session.createTextMessage("this is a reply!");
+ // Step 5. Create a Text Message
+ TextMessage message = session.createTextMessage(text);
- //Step 11. Send The Text Message
+ // Step 6. Send The Text Message
messageProducer.send(message);
+ System.out.println("Sent message: " + message.getText() + "(" + message.getJMSMessageID() + ")");
- //todo something else in the same tx, update database
+ // DB operations
+
+ // Step 7. Look up the XA Data Source
+ DataSource ds = (DataSource)ic.lookup("java:/XADS");
+
+ // Step 8. Retrieve the JDBC connection
+ jdbcConnection = ds.getConnection();
+
+ // Step 9. Create the prepared statement to insert the text and the message's ID in the table
+ PreparedStatement pr = jdbcConnection.prepareStatement("INSERT INTO " + TABLE + " (id, text) VALUES ('" + message.getJMSMessageID() +
+ "', '" +
+ text +
+ "');");
+
+ // Step 10. execute the prepared statement
+ pr.execute();
+
+ // Step 11. close the prepared statement
+ pr.close();
}
finally
{
- //Step 12. Be sure to close our JMS resources!
- if(ic != null)
+ // Step 12. Be sure to close all resources!
+ if (ic != null)
{
ic.close();
}
- if(connection != null)
+ if (jmsConnection != null)
{
- connection.close();
+ jmsConnection.close();
}
+ if (jdbcConnection != null)
+ {
+ jdbcConnection.close();
+ }
}
}
}
Modified: trunk/examples/javaee/ejb-jms-transaction/src/org/jboss/javaee/example/server/SendMessageService.java
===================================================================
--- trunk/examples/javaee/ejb-jms-transaction/src/org/jboss/javaee/example/server/SendMessageService.java 2009-04-10 11:12:02 UTC (rev 6399)
+++ trunk/examples/javaee/ejb-jms-transaction/src/org/jboss/javaee/example/server/SendMessageService.java 2009-04-10 15:29:25 UTC (rev 6400)
@@ -26,5 +26,8 @@
*/
public interface SendMessageService
{
- void send() throws Exception;
+ void sendAndUpdate(String text) throws Exception;
+
+ void createTable() throws Exception;
+
}
Modified: trunk/examples/jms/common/common.css
===================================================================
--- trunk/examples/jms/common/common.css 2009-04-10 11:12:02 UTC (rev 6399)
+++ trunk/examples/jms/common/common.css 2009-04-10 15:29:25 UTC (rev 6400)
@@ -1,2 +1,7 @@
pre, code { background-color: lightgrey;}
pre { border: dotted grey 1px;}
+
+.missing-doc {
+ background-color: red;
+ border: dotted black 1px;
+}
Modified: trunk/examples/jms/common/src/org/jboss/jms/example/JMSExample.java
===================================================================
--- trunk/examples/jms/common/src/org/jboss/jms/example/JMSExample.java 2009-04-10 11:12:02 UTC (rev 6399)
+++ trunk/examples/jms/common/src/org/jboss/jms/example/JMSExample.java 2009-04-10 15:29:25 UTC (rev 6400)
@@ -173,11 +173,11 @@
{
if (server.getInputStream() != null)
{
- server.getInputStream().close();
+ // server.getInputStream().close();
}
if (server.getErrorStream() != null)
{
- server.getErrorStream().close();
+ // server.getErrorStream().close();
}
server.destroy();
}
More information about the jboss-cvs-commits
mailing list