What steps will reproduce the problem?
1. deploy hotswap.jar (1.0) and setup the build.xml for ANT (1.6.5)
2. connect to the target jvm_1 (1.6) on localhost, it works
3. connect to another remote jvm_2 (1.6) with Eclipse (3.4.2), it works
4. connect to the the remote jvm_2 (1.6) with hotswap, it doesn't work, and
produces a ConnectException: Connection refused error.
the ANT debug output shows the stacktrace as below
build.xml:339: java.net.ConnectException: Connection refused: connect
at dak.ant.taskdefs.Hotswap.execute(Hotswap.java:221)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
at org.apache.tools.ant.Task.perform(Task.java:364)
at org.apache.tools.ant.Target.execute(Target.java:341)
at org.apache.tools.ant.Target.performTasks(Target.java:369)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
at
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:
40)
at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
at org.apache.tools.ant.Main.runBuild(Main.java:668)
at org.apache.tools.ant.Main.startAnt(Main.java:187)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at
com.sun.tools.jdi.SocketTransportService.attach(SocketTransportService.java:204)
at
com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.jav
a:98)
at
com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:
72)
at dak.debug.HotSwapHelper.connect(HotSwapHelper.java:83)
at dak.debug.HotSwapHelper.connect(HotSwapHelper.java:36)
at dak.ant.taskdefs.Hotswap.execute(Hotswap.java:193)
... 12 more
--- Nested Exception ---
java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at
com.sun.tools.jdi.SocketTransportService.attach(SocketTransportService.java:204)
at
com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.jav
a:98)
at
com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:
72)
at dak.debug.HotSwapHelper.connect(HotSwapHelper.java:83)
at dak.debug.HotSwapHelper.connect(HotSwapHelper.java:36)
at dak.ant.taskdefs.Hotswap.execute(Hotswap.java:193)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
at org.apache.tools.ant.Task.perform(Task.java:364)
at org.apache.tools.ant.Target.execute(Target.java:341)
at org.apache.tools.ant.Target.performTasks(Target.java:369)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
at
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:
40)
at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
at org.apache.tools.ant.Main.runBuild(Main.java:668)
at org.apache.tools.ant.Main.startAnt(Main.java:187)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)
Total time: 11 seconds
What is the expected output? What do you see instead?
hotswap should be able to connect to the remote JVM and hotswap classes there.
What version of the product are you using? On what operating system?
hotswap-1.0.zip, on Windows (XP SP2/Vista SP1), JDK 1.6.0_13.
Please provide any additional information below.
I define the hotswap target as below:
<taskdef name="hotswap" classname="dak.ant.taskdefs.Hotswap"/>
<target name="hotswap">
<path id="classpathForJavac"><!-- ... --></path>
<echo message="Compiling: ${filter}.java"/>
<!-- echo message="with classpath = ${toString:classpathForJavac}"/ -->
<javac sourcepath="" srcdir="${product.src.dir};${pm.src.dir}"
destdir="${env.TMP}" debug="on" >
<include name="**/${filter}.java"/>
<classpath refid="classpathForJavac" />
</javac>
<echo message="Hotswapping: ${filter}.class"/>
<hotswap verbose="true" host="${host}" port="1234">
<fileset dir="${env.TMP}" includes="**/${filter}.class" />
</hotswap>
<echo message="hotswap done."/>
</target>
and I'm invoking the ant target like this:
ant hotswap -Dfilter=RequestWrapper -Dhost=10.0.0.105
Original issue reported on code.google.com by
roge...@gmail.comon 9 Apr 2009 at 5:05