Details
Description
Remote deployment to remote JBoss container fails in linux machine but works fine in windows machine.
Firewalls were disabled so that is not causing this problem. Error messages is:
Caused by: java.io.IOException: Can not get connection to server. Problem establishing socket connection for InvokerLocator [socket://host:32342/]
Host is the name of the host deploying. No error messages are added to JBoss log.
Host defined in error message is accessible from JBoss machine. Does the Cargo bind to allow remote access?
Issue Links
- is related to
-
CARGO-996
Remote cargo:deployer-deploy fails with exception when deploying from WinXP to SUSELinux JBoss 6
-
Activity
I tried with snapshot but no change, still not able to deploy from linux machine. Works fine with windows.
... and is the name of the host "host" ?
Could you please send us your code/Maven2 project? A full stack trace would also be appreciated.
Thank you
I cannot send the full project, but here is the deploy part of pom.xml. We are using JBoss EAP 5.1 so we need to specify the client jars from fixed files.
Stacktrace:
[INFO] Cannot deploy deployable org.codehaus.cargo.container.deployable.EAR@71f56830 Can not get connection to server. Problem establishing socket connection for InvokerLocator [socket://host:58027/] [INFO] ------------------------------------------------------------------------ [INFO] Trace org.codehaus.cargo.util.CargoException: Cannot deploy deployable org.codehaus.cargo.container.deployable.EAR@71f56830 at org.codehaus.cargo.container.jboss.JBoss5xRemoteDeployer.deploy(JBoss5xRemoteDeployer.java:119) at org.codehaus.cargo.maven2.DeployerDeployMojo.performDeployerActionOnSingleDeployable(DeployerDeployMojo.java:97) at org.codehaus.cargo.maven2.AbstractDeployerMojo.performDeployerActionOnAllDeployables(AbstractDeployerMojo.java:130) at org.codehaus.cargo.maven2.AbstractDeployerMojo.doExecute(AbstractDeployerMojo.java:61) at org.codehaus.cargo.maven2.AbstractCargoMojo.execute(AbstractCargoMojo.java:278) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) at hudson.maven.agent.PluginManagerInterceptor.executeMojo(PluginManagerInterceptor.java:182) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) at org.apache.maven.lifecycle.LifecycleExecutorInterceptor.execute(LifecycleExecutorInterceptor.java:65) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at hudson.maven.agent.Main.launch(Main.java:173) at hudson.maven.MavenBuilder.call(MavenBuilder.java:164) at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:944) at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:875) at hudson.remoting.UserRequest.perform(UserRequest.java:118) at hudson.remoting.UserRequest.perform(UserRequest.java:48) at hudson.remoting.Request$2.run(Request.java:270) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.Exception: Remote action failed: null (java.io.IOException: Can not get connection to server. Problem establishing socket connection for InvokerLocator [socket://host:58027/]) at org.codehaus.cargo.tools.jboss.JBossDeployer.checkFailed(JBossDeployer.java:146) at org.codehaus.cargo.tools.jboss.JBossDeployer.deploy(JBossDeployer.java:77) at org.codehaus.cargo.container.jboss.JBoss5xRemoteDeployer.deploy(JBoss5xRemoteDeployer.java:115) ... 35 more Caused by: java.lang.RuntimeException: java.io.IOException: Can not get connection to server. Problem establishing socket connection for InvokerLocator [socket://host:58027/] at org.jboss.profileservice.management.client.upload.StreamingDeploymentTarget.transferDeployment(StreamingDeploymentTarget.java:286) at org.jboss.profileservice.management.client.upload.StreamingDeploymentTarget.distribute(StreamingDeploymentTarget.java:106) at org.jboss.profileservice.management.client.upload.DeploymentProgressImpl.distribute(DeploymentProgressImpl.java:178) at org.jboss.profileservice.management.client.upload.DeploymentProgressImpl.run(DeploymentProgressImpl.java:83) at org.codehaus.cargo.tools.jboss.JBossDeployer.deploy(JBossDeployer.java:76) ... 36 more Caused by: java.io.IOException: Can not get connection to server. Problem establishing socket connection for InvokerLocator [socket://host:58027/] at org.jboss.remoting.stream.StreamHandler.read(StreamHandler.java:382) at org.jboss.system.server.profileservice.repository.BasicDeploymentRepository.addDeploymentContent(BasicDeploymentRepository.java:193) at org.jboss.profileservice.management.upload.remoting.AbstractDeployHandler.handleStream(AbstractDeployHandler.java:288) at org.jboss.profileservice.management.upload.remoting.AbstractDeployHandler.handleStream(AbstractDeployHandler.java:63) at org.jboss.remoting.ServerInvoker.handleInternalInvocation(ServerInvoker.java:1841) at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:917) at org.jboss.remoting.transport.socket.ServerThread.completeInvocation(ServerThread.java:791) at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:744) at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:548) at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:234) at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:216) at org.jboss.remoting.Client.invoke(Client.java:2034) at org.jboss.remoting.Client.invoke(Client.java:877) at org.jboss.remoting.Client.invoke(Client.java:1756) at org.jboss.profileservice.management.client.upload.StreamingDeploymentTarget.transferDeployment(StreamingDeploymentTarget.java:277) ... 40 more java.lang.Exception: Remote action failed: null (java.io.IOException: Can not get connection to server. Problem establishing socket connection for InvokerLocator [socket://host:58027/]) at org.codehaus.cargo.tools.jboss.JBossDeployer.checkFailed(JBossDeployer.java:146) at org.codehaus.cargo.tools.jboss.JBossDeployer.deploy(JBossDeployer.java:77) at org.codehaus.cargo.container.jboss.JBoss5xRemoteDeployer.deploy(JBoss5xRemoteDeployer.java:115) at org.codehaus.cargo.maven2.DeployerDeployMojo.performDeployerActionOnSingleDeployable(DeployerDeployMojo.java:97) at org.codehaus.cargo.maven2.AbstractDeployerMojo.performDeployerActionOnAllDeployables(AbstractDeployerMojo.java:130) at org.codehaus.cargo.maven2.AbstractDeployerMojo.doExecute(AbstractDeployerMojo.java:61) at org.codehaus.cargo.maven2.AbstractCargoMojo.execute(AbstractCargoMojo.java:278) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) at hudson.maven.agent.PluginManagerInterceptor.executeMojo(PluginManagerInterceptor.java:182) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) at org.apache.maven.lifecycle.LifecycleExecutorInterceptor.execute(LifecycleExecutorInterceptor.java:65) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at hudson.maven.agent.Main.launch(Main.java:173) at hudson.maven.MavenBuilder.call(MavenBuilder.java:164) at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:944) at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:875) at hudson.remoting.UserRequest.perform(UserRequest.java:118) at hudson.remoting.UserRequest.perform(UserRequest.java:48) at hudson.remoting.Request$2.run(Request.java:270) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.RuntimeException: java.io.IOException: Can not get connection to server. Problem establishing socket connection for InvokerLocator [socket://host:58027/] at org.jboss.profileservice.management.client.upload.StreamingDeploymentTarget.transferDeployment(StreamingDeploymentTarget.java:286) at org.jboss.profileservice.management.client.upload.StreamingDeploymentTarget.distribute(StreamingDeploymentTarget.java:106) at org.jboss.profileservice.management.client.upload.DeploymentProgressImpl.distribute(DeploymentProgressImpl.java:178) at org.jboss.profileservice.management.client.upload.DeploymentProgressImpl.run(DeploymentProgressImpl.java:83) at org.codehaus.cargo.tools.jboss.JBossDeployer.deploy(JBossDeployer.java:76) ... 36 more Caused by: java.io.IOException: Can not get connection to server. Problem establishing socket connection for InvokerLocator [socket://host:58027/] at org.jboss.remoting.stream.StreamHandler.read(StreamHandler.java:382) at org.jboss.system.server.profileservice.repository.BasicDeploymentRepository.addDeploymentContent(BasicDeploymentRepository.java:193) at org.jboss.profileservice.management.upload.remoting.AbstractDeployHandler.handleStream(AbstractDeployHandler.java:288) at org.jboss.profileservice.management.upload.remoting.AbstractDeployHandler.handleStream(AbstractDeployHandler.java:63) at org.jboss.remoting.ServerInvoker.handleInternalInvocation(ServerInvoker.java:1841) at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:917) at org.jboss.remoting.transport.socket.ServerThread.completeInvocation(ServerThread.java:791) at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:744) at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:548) at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:234) at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:216) at org.jboss.remoting.Client.invoke(Client.java:2034) at org.jboss.remoting.Client.invoke(Client.java:877) at org.jboss.remoting.Client.invoke(Client.java:1756) at org.jboss.profileservice.management.client.upload.StreamingDeploymentTarget.transferDeployment(StreamingDeploymentTarget.java:277) ... 40 more
pom.xml:
<plugin> <configuration> <container> <containerId>jboss5x</containerId> <type>remote</type> </container> <configuration> <type>runtime</type> <properties> <cargo.hostname>${remote.hostname}</cargo.hostname> <cargo.rmi.port>1099</cargo.rmi.port> <cargo.remote.username>admin</cargo.remote.username> <cargo.remote.password>admin</cargo.remote.password> </properties> </configuration> <deployer> <type>remote</type> <deployables> <deployable> <groupId>com.test</groupId> <artifactId>test-ear</artifactId> <type>ear</type> </deployable> </deployables> </deployer> </configuration> <dependencies> <dependency> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-core-tools-jboss-deployer-5.1-and-onwards </artifactId> <version>1.1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.jnp</groupId> <artifactId>jnp-client</artifactId> <version>5.1.0.GA</version> <scope>system</scope> <systemPath>${jboss.home}/client/jnp-client.jar </systemPath> </dependency> <dependency> <groupId>org.jboss.logging</groupId> <artifactId>spi-logging</artifactId> <version>5.1.0.GA</version> <scope>system</scope> <systemPath>${jboss.home}/client/jboss-logging-spi.jar </systemPath> </dependency> <dependency> <groupId>org.jboss.integration</groupId> <artifactId>jboss-profileservice-spi</artifactId> <version>5.1.0.GA</version> <scope>system</scope> <systemPath>${jboss.home}/client/jboss-profileservice-client.jar </systemPath> </dependency> <dependency> <groupId>org.jboss.jbossas</groupId> <artifactId>jboss-as-client</artifactId> <version>5.1.0.GA</version> <!-- <type>pom</type> --> <scope>system</scope> <systemPath>${jboss.home}/client/jboss-client.jar </systemPath> </dependency> <dependency> <groupId>org.jboss.aop</groupId> <artifactId>jboss-aop-client</artifactId> <version>5.1.0.GA</version> <!-- <type>pom</type> --> <scope>system</scope> <systemPath>${jboss.home}/client/jboss-aop-client.jar </systemPath> </dependency> <dependency> <groupId>org.jboss.core</groupId> <artifactId>jboss-common-core</artifactId> <version>5.1.0.GA</version> <!-- <type>pom</type> --> <scope>system</scope> <systemPath>${jboss.home}/client/jboss-common-core.jar </systemPath> </dependency> <dependency> <groupId>org.jboss.remoting</groupId> <artifactId>jboss-remoting</artifactId> <version>5.1.0.GA</version> <!-- <type>pom</type> --> <scope>system</scope> <systemPath>${jboss.home}/client/jboss-remoting.jar </systemPath> </dependency> <dependency> <groupId>org.jboss.aspect</groupId> <artifactId>jboss-aspect</artifactId> <version>5.1.0.GA</version> <!-- <type>pom</type> --> <scope>system</scope> <systemPath>${jboss.home}/client/jboss-aspect-jdk50-client.jar </systemPath> </dependency> <dependency> <groupId>org.jboss.aspect</groupId> <artifactId>jboss-aspect-security</artifactId> <version>5.1.0.GA</version> <scope>system</scope> <systemPath>${jboss.home}/common/lib/jboss-security-aspects.jar </systemPath> </dependency> <dependency> <groupId>org.jboss.integration</groupId> <artifactId>jboss-integration</artifactId> <version>5.1.0.GA</version> <scope>system</scope> <systemPath>${jboss.home}/client/jboss-integration.jar </systemPath> </dependency> <dependency> <groupId>org.jboss.metadata</groupId> <artifactId>jboss-metadata</artifactId> <version>5.1.0.GA</version> <scope>system</scope> <systemPath>${jboss.home}/client/jboss-metadata.jar </systemPath> </dependency> <dependency> <groupId>org.jboss.security</groupId> <artifactId>jboss-security-spi</artifactId> <version>5.1.0.GA</version> <scope>system</scope> <systemPath>${jboss.home}/client/jboss-security-spi.jar </systemPath> </dependency> <dependency> <groupId>org.jboss.sx</groupId> <artifactId>jboss-sx-client</artifactId> <version>5.1.0.GA</version> <scope>system</scope> <systemPath>${jboss.home}/client/jbosssx-client.jar </systemPath> </dependency> <dependency> <groupId>org.jboss.concurret</groupId> <artifactId>jboss-concurret</artifactId> <version>5.1.0.GA</version> <scope>system</scope> <systemPath>${jboss.home}/client/concurrent.jar </systemPath> </dependency> <dependency> <groupId>org.jboss.javee</groupId> <artifactId>jboss-javaee</artifactId> <version>5.1.0.GA</version> <scope>system</scope> <systemPath>${jboss.home}/client/jboss-javaee.jar </systemPath> </dependency> <dependency> <groupId>org.jboss.mdr</groupId> <artifactId>jboss-mdr</artifactId> <version>5.1.0.GA</version> <scope>system</scope> <systemPath>${jboss.home}/client/jboss-mdr.jar </systemPath> </dependency> <dependency> <groupId>trove</groupId> <artifactId>gnu-trove</artifactId> <version>5.1.0.GA</version> <scope>system</scope> <systemPath>${jboss.home}/client/trove.jar </systemPath> </dependency> <dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> <version>5.1.0.GA</version> <scope>system</scope> <systemPath>${jboss.home}/client/javassist.jar </systemPath> </dependency> </dependencies> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <version>1.1.0-SNAPSHOT</version> <executions> <execution> <id>verify-deploy</id> <phase>install</phase> <goals> <goal>deployer-deploy</goal> </goals> </execution> <execution> <id>clean-undeploy</id> <phase>pre-clean</phase> <goals> <goal>deployer-undeploy</goal> </goals> </execution> </executions> </plugin>
Hello again
What is on port 58027?
Could you please also try, from the Linux machine:
telnet host 58027
Finally, do you have SELinux on the machine on which you're running Cargo?
That port 58027 is different everytime I run cargo. To my understanding there is nothing on that port.
SELinux is disabled.
hmm interesting... and is $
{remote.hostname}the machine called "host" or something else? I'm wondering what that "host" is...
$
{remote.hostname} is not the machine called 'host'. 'host' machine is the linux machine doing the deploy.
Deploying starts but empty file is generated to JBoss server deploy directory.
A'ha, that's interesting... Can you please check if the server can access the machine named "host"?
Yes it can. There are no network connection problems between those two hosts.
I know I'm asking for more and more effort, but is it possible for you to deploy a tool like Wireshark on the server and check what is going on when CARGO deployment is failing?
It's not a "cargo" bug. it seems like it's a known bug of Jboss remote deployement on some Linux dist.
see the following link
http://community.jboss.org/wiki/WhydoIgetasocketconnectionerrorwhenusingremoteJBossAS
Thank you for your detailed input, Steve.
http://cargo.codehaus.org/JBoss+Remote+Deployer has been updated accordingly, and now closing the bug.
This solution works only when JBoss AS is on the same machine where tests are running. If you try to use JBoss server on another machine then the problem is still here.
I use Maven to build my project and use Cargo plugin to deploy application on JBoss. I have two profiles, one for Client(local) machine and one for Server(remote) machine (in both cases I use Remote deploy). My Client machine is Ubuntu 11.04 and my Server is CentOS 5.5. Both machines have JBoss 6 AS.
If I build project using Client profile everything works, but if I build project using Server profile then I get the same connection exception:
Caused by: java.io.IOException: Can not get connection to server. Problem establishing socket connection for InvokerLocator [socket://CLIENT-HOST:15171/]
But there is Client hostname in exception and not Server. Is this expected or there is some problem?
Does it work better with other distributions or OSes? Windows as client, for example.
Yes, it works when I use Windows as client, and CentOS is still server.
hmm... so it definitely is Ubuntu.
Can you please retry the tip decribed in http://cargo.codehaus.org/JBoss+Remote+Deployer and use the fully qualified domain name of your host as myhost?
Thank you
It works with fully qualified name for host in /etc/hosts.
Thank you very much.
Great, I've updated the http://cargo.codehaus.org/JBoss+Remote+Deployer with the fully qualified name tip.
I am still having this problem. I have put fully qualified name to /etc/hosts but I still get the same error but in error message the host is not fully qualified. Any ideas what is wrong?
Perhaps asking on the user@cargo.codehaus.org list and/or the JBoss forums could help... I'm personally out of ideas :o
I have the same problem with 1.1.1-SNAPSHOT and JBoss 6. My local machine where Cargo is run is Ubuntu 11.04 and remote machine which runs JBoss 6 is SUSE Linux. I tried to modify /etc/hosts on my local machine but no help. Of course I had to add my local machine host name to /etc/hosts to remote machine so that server can resolve my local machine host name. I can ping from remote to my local machine. I can provide log from Wireshark (~600KB). I could even try to modify Cargo code to see if passing IP address instead of hostname would make any difference but I have no idea what to modify.
After spending a day trying to get past this problem, I thought that I would share what I learned. In my setup, I am deploying a WAR file from clientA (clienta.mydomain) to serverB (serverb.mydomain). JBoss 5.1.0 / Cargo 1.2.1
If clientA is windoze, you should not have any problems (I can't believe I just put that in writing). If clientA is *nix, you could run into the dreaded 'Problem establishing socket connection for InvokerLocator' problem. The operating system of serverB make no difference. The only requirement for serverB is that it must be able to resolve clienta.mydomain and be able to establish a socket connection to clientA on some random port.
I read through all of the instructions about modifying the hosts file but it did not help at all. Actually the hosts file on clientA already had clienta and clienta.mydomain resolving to 127.0.0.1. I also found some information on configuring the server to use a bisocket connector. No matter what I tried, the result continued to be the same. The client could connect to the server and create a 0 byte file and then fail.
It turns out that the problem really was the hosts file. According to the instructions, you should have the following line in your hosts file replacing 'myhost' with your actual hostname as per the hostname command.
127.0.0.1 myhost localhost localhost.localdomain
The output of the hostname command on clientA was clienta.mydomain. The problem is that the JBoss Remoting (used by Cargo to perform the deployment) figures out which IP address to bind to by looking up the hostname. Since clienta.mydomain resolved to 127.0.0.1, it was only listening for incoming socket connections on 127.0.0.1. Removing clienta.mydomain from the hosts file solved my problem.
Hi Quinton
How does this differ compared to what's documented in http://cargo.codehaus.org/JBoss+Remote+Deployer ?
Thank you
Can you please try again with CARGO 1.1.0-SNAPSHOT?
For instructions, read http://cargo.codehaus.org/Downloads (chapter Continuous Builds) or http://cargo.codehaus.org/Maven2+Plugin+Installation (chapter Snapshots)
Thank you