[Design of Messaging on JBoss (Messaging/JBoss)] - Re: Large messages broken
by clebert.suconic@jboss.com
I *really* tried finishing it by yesterday... but I had issues with FlowControl and MessageConsumers.
The message eventually stops being consumed in some scenarios.
I have everything else working.. including Failover that only failed on the Consumer cases.
Also... there are a few considerations the new code will have:
I - Since we are now based on streams, and not files any more.... it won't be possible to resend messages without reseting the messageBody.
So.. you won' t be able to do something like:
Message largeMessage = consumer1.receive(...);
producer1.send(largeMessage); // the first one would work though
producer2.send(largeMessage);
(This would work on the server though (Bridge), as on the server we are still file based)
II - One thing I' m not sure how to proceed yet. The user may receive a large-message and do nothing with the buffer.
for (....)
| {
| Message msg = buffer.receive(...);
|
| // you read the body partially... and discover that message should just be ignored... so you only read the buffer partially. The code will go to the next message
| }
|
Right now, I' m solving this by emptiying the buffer when the next buffer.receive() is called. But then the following would fail:
Msg msg = consumer.receive(...);
Msg msg2 = consumer.receve(...)
msg.getBody().readWhatever(); // the buffer is gone at this point.
If we don' t do this, we would need to force the user to read or programatically throw the buffer away.
Any thoughts about II?
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4224669#4224669
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4224669
17 years
[Design of Messaging on JBoss (Messaging/JBoss)] - Servlet transport problem
by gaohoward
Hi, I can't get the servlet transport working. I configured a new connection factory that using servlet transport, like:
| <connection-factory name="ServletConnectionFactory">
| <connector-ref connector-name="netty-servlet"/>
| <entry name="ServletConnectionFactory"/>
| <entry name="/ServletConnectionFactory"/>
| <entry name="/XAServletConnectionFactory"/>
| <entry name="java:/ServletConnectionFactory"/>
| <entry name="java:/ServletConnectionFactory"/>
| </connection-factory>
|
and the netty-servlet configuration is like
| <connector name="netty-servlet">
| <factory-class>org.jboss.messaging.integration.transports.netty.NettyConnectorFactory</factory-class>
| <param key="jbm.remoting.netty.host" value="localhost" type="String"/>
| <param key="jbm.remoting.netty.port" value="8080" type="Integer"/>
| <param key="jbm.remoting.netty.useservlet" value="true" type="Boolean"/>
| <param key="jbm.remoting.netty.servletpath" value="/jms-servlet/JBMServlet" type="String"/>
| </connector>
|
After I deployed the war that contains the servlet (web.xml), I run my simple example, and it got exception in create connection, here is the output:
| runExample:
| [java] ------------uri: http://localhost:8080/jms-servlet/JBMServlet
| [java] ------------------connection create ok.
| [java] Apr 9, 2009 7:48:17 PM org.jboss.messaging.core.logging.Logger warn
| [java] WARNING: Connection failure has been detected Netty exception:0
| [java] java.lang.InterruptedException
| [java] at org.jboss.netty.util.LinkedTransferQueue.take(LinkedTransferQueue.java:565)
| [java] at org.jboss.netty.channel.socket.http.HttpTunnelingClientSocketChannel.receiveChunk(HttpTunnelingClientSocketChannel.java:181)
| [java] at org.jboss.netty.channel.socket.http.HttpTunnelWorker.run(HttpTunnelWorker.java:66)
| [java] at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:72)
| [java] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
| [java] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
| [java] at java.lang.Thread.run(Thread.java:595)
| [java] Exception in thread "Thread-1 (group:jbm-netty-connector-worker-threads-33414193)" java.lang.NullPointerException
| [java] at org.jboss.netty.buffer.ChannelBuffers.wrappedBuffer(ChannelBuffers.java:242)
| [java] at org.jboss.netty.buffer.ChannelBuffers.wrappedBuffer(ChannelBuffers.java:232)
| [java] at org.jboss.netty.channel.socket.http.HttpTunnelWorker.run(HttpTunnelWorker.java:75)
| [java] at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:72)
| [java] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
| [java] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
| [java] at java.lang.Thread.run(Thread.java:595)
| [java] Exception in thread "main" javax.jms.JMSException: Timed out waiting for response when sending packet 30
| [java] at org.jboss.messaging.core.remoting.impl.RemotingConnectionImpl$ChannelImpl.sendBlocking(RemotingConnectionImpl.java:1186)
| [java] at org.jboss.messaging.core.client.impl.ConnectionManagerImpl.createSession(ConnectionManagerImpl.java:310)
| [java] at org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl.createSessionInternal(ClientSessionFactoryImpl.java:870)
| [java] at org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl.createSession(ClientSessionFactoryImpl.java:579)
| [java] at org.jboss.messaging.jms.client.JBossConnection.authorize(JBossConnection.java:504)
| [java] at org.jboss.messaging.jms.client.JBossConnectionFactory.createConnectionInternal(JBossConnectionFactory.java:649)
| [java] at org.jboss.messaging.jms.client.JBossConnectionFactory.createConnection(JBossConnectionFactory.java:441)
| [java] at org.jboss.messaging.jms.client.JBossConnectionFactory.createConnection(JBossConnectionFactory.java:436)
| [java] at org.jboss.javaee.example.ServletTransportExample.main(ServletTransportExample.java:56)
| [java] Caused by: MessagingException[errorCode=3 message=Timed out waiting for response when sending packet 30]
| [java] ... 9 more
| [java] Java Result: 1
|
| undeploy-servlet:
| [delete] Deleting directory /home/howard/apps/jboss-5.1.0.CR1/server/jbm2_default/deploy/jms-servlet.war
|
Looks like a netty problem, I have no idea so far. Anybody can give a hint? thanks.
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4224656#4224656
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4224656
17 years
[Design the new POJO MicroContainer] - New tree state model
by alesj
"kabir" wrote :
| I've vaguely started thinking about this in the back of my mind, and am curious about how you see a few of the initial concepts.
|
| In the current linear one, install/uninstall = move to next/previous state.
|
| In the tree-based one, there will be more than one state to "install" to. Something needs to decide that. How will the decision be made, and who will make it, about what state to move to?
|
| Going "back" will one always transition to the fromState? Or can there be several of these as well? This question feels weird, but I was thinking of circular states such as
| "Does Not Exist" <-> "method ready"
| ^-------------> passive <-----^
|
It would still be sort of linear,
meaning we wouldn't have to change too much.
At that time I was thinking about having some sub-linear path in the ControllerContext.
And you would only change that path once you needed a different state "route".
Afair this would work, you would only need some additional checks.
e.g. confirming that the path you provided is legal
e.g.2 checking if the state you wanna transfer exists on that path
...
And instead of asking the Controller to provide the state model,
you would ask the ControllerContext for his current linear path.
HTH
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4224583#4224583
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4224583
17 years
[Design of JBoss ESB] - JBossAS5 deployers for JBossESB 4.x
by beve
Background
In the ESB you can specify that a service should be exposed as a WS. Upon deploying the service a web-app will get generated
and deployed. As part of this process a number of files get generated, like the servlet, jaxws handlerchain, wsdl file.
In JBoss AS 4.x this was done by actually creating a .war file on the local filesystem, but in AS5 it is done by using a
number of deployers.
I'm having a problem with making a generated wsdl available the WS deployer. Following are the details of this issue.
One of our deployers has the responsibility of generating the WSDL file and also putting it into an in-memory virtual file system:
public class EsbWsdlDeployer extends AbstractSimpleVFSRealDeployer<EsbMetaData>
| {
| /** Logger */
| private Logger log = Logger.getLogger(EsbWsdlDeployer.class);
|
| /**
| * No-args constructor.
| */
| public EsbWsdlDeployer()
| {
| super(EsbMetaData.class);
| setStage(DeploymentStages.POST_CLASSLOADER);
| setOutput(JSEArchiveMetaData.class);
| setOutput(EsbMetaData.class);
| }
|
| @Override
| public void deploy(final VFSDeploymentUnit deploymentUnit, final EsbMetaData esbMetaData) throws DeploymentException
| {
| final List<WebserviceInfo> endpointServices = esbMetaData.getModel().getWebserviceServices();
| if (endpointServices != null && endpointServices.size() > 0)
| {
| log.info("Deploying webservices for : " + esbMetaData.getDeploymentName() + ", " + deploymentUnit.getClassPath());
|
| try
| {
| URL dynamicClassRoot = new URL("vfsmemory", esbMetaData.getDeploymentName(), "");
|
| for (WebserviceInfo webserviceInfo : endpointServices)
| {
| final ESBServiceEndpointInfo serviceInfo = new ESBServiceEndpointInfo(webserviceInfo);
| final String wsdl = ESBContractGenerator.generateWSDL(webserviceInfo, serviceInfo, deploymentUnit.getClassLoader());
| URL wsdlUrl = new URL(dynamicClassRoot + "/" + serviceInfo.getWSDLFileName());
|
| VirtualFile wsdlFile = MemoryFileFactory.putFile(wsdlUrl, wsdl.getBytes());
| deploymentUnit.addClassPath(wsdlFile);
| URL resource = deploymentUnit.getClassLoader().getResource(serviceInfo.getWSDLFileName());
| log.info("WDSL loaded with classloader: " + resource);
| log.info("WDSL deploymentUnit: " + deploymentUnit.getClassPath());
| log.info("WDSL : " + wsdlUrl);
| }
| }
| catch (final Exception e)
| {
| throw new DeploymentException("Failed to create webservice artifact", e);
| }
| }
| }
| }
As you can see I'm logging a lot in this deployer to show what is happening:
09:04:34,793 INFO [EsbWsdlDeployer] Deploying webservices for : Quickstart_publish_as_webservice,
| [
| MemoryContextHandler@6542706[
| path=
| context=vfsmemory://3j011-lnr81b-ftb3s170-1-ftb3sv3i-25
| real=vfsmemory://3j011-lnr81b-ftb3s170-1-ftb3sv3i-25],
|
| DelegatingHandler@5401885[
| path=Quickstart_publish_as_webservice.esb
| context=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/
| real=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb],
|
| MemoryContextHandler@24755545[
| path= context=vfsmemory://Quickstart_publish_as_webservice
| real=vfsmemory://Quickstart_publish_as_webservice],
|
| MemoryContextHandler@25044741[
| path=WEB-INF/classes
| context=vfsmemory://Quickstart_publish_as_webservice
| real=vfsmemory://Quickstart_publish_as_webservice/WEB-INF/classes]
| ]
|
| 09:04:35,130 INFO [EsbWsdlDeployer] WDSL loaded with classloader: vfsmemory://Quickstart_publish_as_webservice/WEB-INF/wsdl/ESBServiceSample/HelloWorldPubService.wsdl
|
| INFO [EsbWsdlDeployer] WDSL deploymentUnit:
| [
| MemoryContextHandler@6542706[
| path=
| context=vfsmemory://3j011-lnr81b-ftb3s170-1-ftb3sv3i-25
| real=vfsmemory://3j011-lnr81b-ftb3s170-1-ftb3sv3i-25],
|
| DelegatingHandler@5401885[
| path=Quickstart_publish_as_webservice.esb
| context=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/
| real=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb],
|
| MemoryContextHandler@24755545[
| path=
| context=vfsmemory://Quickstart_publish_as_webservice
| real=vfsmemory://Quickstart_publish_as_webservice],
|
| MemoryContextHandler@25044741[
| path=WEB-INF/classes
| context=vfsmemory://Quickstart_publish_as_webservice
| real=vfsmemory://Quickstart_publish_as_webservice/WEB-INF/classes],
|
| MemoryContextHandler@19898723[
| path=WEB-INF/wsdl/ESBServiceSample/HelloWorldPubService.wsdl
| context=vfsmemory://Quickstart_publish_as_webservice
| real=vfsmemory://Quickstart_publish_as_webservice/WEB-INF/wsdl/ESBServiceSample/HelloWorldPubService.wsdl]
| ]
| INFO [EsbWsdlDeployer] WDSL : vfsmemory://Quickstart_publish_as_webservice/WEB-INF/wsdl/ESBServiceSample/HelloWorldPubService.wsdl
You will also notice that I try loading the wsdl from the deployments classloader to be sure that it has access to the wsdl.
Next, the following error is recieved during deployment (slightly modified to that it's easier to read the paths):
| ERROR [AbstractKernelController] Error installing to Real: name=vfszip:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb/ state=PreReal mode=Manual requiredState=Real
| org.jboss.deployers.spi.DeploymentException: Error during deploy: vfszip:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb/
| at org.jboss.deployers.spi.DeploymentException.rethrowAsDeploymentException(DeploymentException.java:49)
| at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:177)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1157)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098)
| at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1598)
| at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1062)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
| at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
| at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781)
| at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:698)
| at org.jboss.system.server.profileservice.ProfileServiceBootstrap.loadProfile(ProfileServiceBootstrap.java:304)
| at org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:205)
| at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:405)
| at org.jboss.Main.boot(Main.java:209)
| at org.jboss.Main$1.run(Main.java:547)
| at java.lang.Thread.run(Thread.java:595)
|
| Caused by: org.jboss.ws.WSException: Cannot build meta data: Child not found WEB-INF/wsdl/ESBServiceSample/HelloWorldPubService.wsdl for
| DelegatingHandler(a)6484689[path=Quickstart_publish_as_webservice.esb context=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/ real=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb],
| available children:
| [
| ZipEntryHandler(a)2915895[path=Quickstart_publish_as_webservice.esb/.classpath context=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/ real=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb/.classpath],
|
| ZipEntryHandler(a)17986284[path=Quickstart_publish_as_webservice.esb/.project context=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/ real=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb/.project],
|
| ZipEntryHandler(a)3603480[path=Quickstart_publish_as_webservice.esb/META-INF context=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/ real=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb/META-INF],
|
| ZipEntryHandler(a)31506190[path=Quickstart_publish_as_webservice.esb/fault.xsd context=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/ real=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb/fault.xsd],
|
| ZipEntryHandler(a)2055214[path=Quickstart_publish_as_webservice.esb/jbmq-queue-service.xml context=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/ real=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb/jbmq-queue-service.xml],
|
| ZipEntryHandler(a)14474074[path=Quickstart_publish_as_webservice.esb/org context=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/ real=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb/org],
|
| ZipEntryHandler(a)29697393[path=Quickstart_publish_as_webservice.esb/request.xsd context=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/ real=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb/request.xsd],
|
| ZipEntryHandler(a)1920726[path=Quickstart_publish_as_webservice.esb/response.xsd context=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/ real=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb/response.xsd]]
| at org.jboss.ws.metadata.builder.jaxws.JAXWSMetaDataBuilderJSE.buildMetaData(JAXWSMetaDataBuilderJSE.java:73)
| at org.jboss.wsf.stack.jbws.UnifiedMetaDataDeploymentAspect.start(UnifiedMetaDataDeploymentAspect.java:64)
| at org.jboss.wsf.framework.deployment.DeploymentAspectManagerImpl.deploy(DeploymentAspectManagerImpl.java:129)
| at org.jboss.wsf.container.jboss50.deployer.ArchiveDeployerHook.deploy(ArchiveDeployerHook.java:75)
| at org.jboss.wsf.container.jboss50.deployer.AbstractWebServiceDeployer.internalDeploy(AbstractWebServiceDeployer.java:60)
| at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)
| at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:171)
| ... 18 more
| Caused by: java.io.IOException: Child not found WEB-INF/wsdl/ESBServiceSample/HelloWorldPubService.wsdl for
| DelegatingHandler(a)6484689[path=Quickstart_publish_as_webservice.esb context=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/ real=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb],
| available children:
| [
| ZipEntryHandler(a)2915895[path=Quickstart_publish_as_webservice.esb/.classpath context=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/ real=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb/.classpath],
|
| ZipEntryHandler(a)17986284[path=Quickstart_publish_as_webservice.esb/.project context=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/ real=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb/.project],
|
| ZipEntryHandler(a)3603480[path=Quickstart_publish_as_webservice.esb/META-INF context=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/ real=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb/META-INF],
|
| ZipEntryHandler(a)31506190[path=Quickstart_publish_as_webservice.esb/fault.xsd context=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/ real=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb/fault.xsd],
|
| ZipEntryHandler(a)2055214[path=Quickstart_publish_as_webservice.esb/jbmq-queue-service.xml context=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/ real=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb/jbmq-queue-service.xml],
|
| ZipEntryHandler(a)14474074[path=Quickstart_publish_as_webservice.esb/org context=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/ real=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb/org],
|
| ZipEntryHandler(a)29697393[path=Quickstart_publish_as_webservice.esb/request.xsd context=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/ real=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb/request.xsd],
|
| ZipEntryHandler(a)1920726[path=Quickstart_publish_as_webservice.esb/response.xsd context=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/ real=file:/opt/jboss/as/jboss-5.0.1.GA/server/default/deploy/Quickstart_publish_as_webservice.esb/response.xsd]]
| at org.jboss.virtual.VirtualFile.findChild(VirtualFile.java:461)
| at org.jboss.metadata.serviceref.VirtualFileAdaptor.findChild(VirtualFileAdaptor.java:99)
| at org.jboss.wsf.framework.deployment.ArchiveDeploymentImpl.getMetaDataFileURL(ArchiveDeploymentImpl.java:97)
| at org.jboss.ws.metadata.builder.jaxws.JAXWSProviderMetaDataBuilder.buildProviderMetaData(JAXWSProviderMetaDataBuilder.java:125)
| at org.jboss.ws.metadata.builder.jaxws.JAXWSServerMetaDataBuilder.setupProviderOrWebService(JAXWSServerMetaDataBuilder.java:55)
| at org.jboss.ws.metadata.builder.jaxws.JAXWSMetaDataBuilderJSE.buildMetaData(JAXWSMetaDataBuilderJSE.java:61)
| ... 24 more
|
Now to me, it looks like when the web service is getting deployed it does not have access to the deploymentunits classpath. It can see all the files in the real .esb archive but not the in-memory files that were created previously by our deployers.
Any thoughts or suggestions on this?
/Daniel
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4224581#4224581
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4224581
17 years