Compression Socket
jludwig Nov 16, 2006 9:51 AMhi,
i have an EJB 3.0 application which extract text-data from MySQL Database. Only the EJB application works fine.
Now, i want get the data in compressed form by using CompressedSocket. Therefore, i've create the CompressionSocket classes from the "org.jboss.test.jrmp.ejb" package. In additional, i wrote the following jboss.xml deployment descriptor:
<?xml version="1.0"?> <jboss> <container-configurations> <container-configuration> <container-name>Standard Stateless SessionBean</container-name> <invoker-proxy-binding-name>stateless-compression-invoker</invoker-proxy-binding-name> <container-invoker-conf> <Optimized>true</Optimized> <RMIObjectPort>0</RMIObjectPort> <RMIClientSocketFactory>de.einsundeins.socket.CompressionClientSocketFactory</RMIClientSocketFactory> <RMIServerSocketFactory>de.einsundeins.socket.CompressionServerSocketFactory</RMIServerSocketFactory> </container-invoker-conf> </container-configuration> </container-configurations> <enterprise-beans> <session> <ejb-name>TextBean</ejb-name> <configuration-name>Standard Stateless SessionBean</configuration-name> <invoker-bindings> <invoker> <invoker-proxy-binding-name> stateless-compression-invoker </invoker-proxy-binding-name> <jndi-name>CompressedApp/TextBean/remote</jndi-name> </invoker> </invoker-bindings> </session> </enterprise-beans> <invoker-proxy-bindings> <invoker-proxy-binding> <name>stateless-compression-invoker</name> <invoker-mbean>jboss:service=invoker,type=jrmp, socketType=CompressionSocketFactory</invoker-mbean> <proxy-factory>org.jboss.proxy.ejb.ProxyFactory</proxy-factory> <proxy-factory-config> <client-interceptors> <home> <interceptor>org.jboss.proxy.ejb.HomeInterceptor</interceptor> <interceptor>org.jboss.proxy.SecurityInterceptor</interceptor> <interceptor>org.jboss.proxy.TransactionInterceptor</interceptor> <interceptor>org.jboss.invocation.InvokerInterceptor</interceptor> </home> <bean> <interceptor>org.jboss.proxy.ejb.StatelessSessionInterceptor</interceptor> <interceptor>org.jboss.proxy.SecurityInterceptor</interceptor> <interceptor>org.jboss.proxy.TransactionInterceptor</interceptor> <interceptor>org.jboss.invocation.InvokerInterceptor</interceptor> </bean> </client-interceptors> </proxy-factory-config> </invoker-proxy-binding> </invoker-proxy-bindings> </jboss>
Now, i get the same result when i deploy and start the application as previous. I don't get an error message if i rename the clientSocketFactory or serverSocketFactory class. First, i think that the jboss.xml file is never read but the application doesn't run when i modify the Enterprise-bean settings in this file.
The code of the TextBean.class:
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.ejb.Remote; import javax.ejb.Stateless; import org.jboss.annotation.ejb.RemoteBinding; import de.einsundeins.ccsys.util.DBConnection; import de.einsundeins.ccsys.interfaces.*; @Stateless @Remote(TextRemote.class) //@RemoteBinding (jndiBinding="CompressedApp/TextBean/remote") public class TextBean implements TextHome, TextRemote { private static final String QRY_TEXT_SEL = "select text.data from textandbinary.text LIMIT 100"; public String getText() { try { Connection ConMySQL = DBConnection.dbMysql(DBConnection.MySQLURL); PreparedStatement prepStmt = ConMySQL.prepareStatement(QRY_TEXT_SEL); ResultSet rs = prepStmt.executeQuery(); String text = ""; while(rs.next()){ text = text + rs.getString("data"); } return text; } catch(ClassNotFoundException ex){ ex.printStackTrace(); }catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } }
TextRemote.class Interface:
public interface TextRemote{ public String getText(); }
CompressedClient.class
import de.einsundeins.ccsys.interfaces.*; import javax.naming.InitialContext; public class CompressedClient { public static void main(String args[]){ try{ InitialContext ctx = new InitialContext(); TextRemote remote = (TextRemote)ctx.lookup("CompressedApp/TextBean/remote"); System.out.println(remote.getText()); } catch(Exception e){ e.printStackTrace(); } } }
I deploy the application as an EAR-file with following structure:
CompressedApp.ear
- application.xml --> META-INF
- ejb-app.jar
- TextBean.class
- TextRemote.class
- CompressionClientSocketFactory.class
- CompressionServerSocketFactory.class
- CompressionServerSocket.class
- CompressionSocket.class
- CompressionInputStream.class
- CompressionOutputStream.class
- CompressionConstants.class
- jboss.xml --> META-INF
Is it possible that i have make for error in the jboss.xml file or i have forget about something?
I don't know it.
I would be grateful for every help.
Best regards
Markus