Question

I am trying to run a Server and Client application in Jetty server on my Ubuntu 12.04 machine. The server starts without any problem and I used the following command

$ mvn jetty:run

on issuing this command the first line was

Listening for transport dt_socket at address: 8787

But when I launched the client I got the following error

ERROR: transport error 202: bind failed: Address already in use
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:690]
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
Aborted

Looks something to do with transport dt_socket. I have no understanding what it is and how to use another address for Client?

Edit 1

jetty-maven-plugin from pom.xml for client looks like this

<build>
    <plugins>

      <!-- Specific jetty-maven-plugin configuration for running Jetty during
        development. None of its goals are run in a normal build lifecycle. -->
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>${jetty-maven-plugin.version}</version>
        <configuration>
          <webAppConfig>
            <contextPath>/</contextPath>
            <extraClasspath>${basedir}/src/test/resources/</extraClasspath>
          </webAppConfig>
          <connectors>
            <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
              <port>${servlet.port}</port>
              <host>0.0.0.0</host>
            </connector>
          </connectors>
          <reload>manual</reload>
          <useTestClasspath>true</useTestClasspath>
        </configuration>
      </plugin>
    </plugins>
  </build>

My assumption is some Jetty is starting in debug mode and trying to attach the debugger at port 8787 which is already bound to debugger of Server.

Était-ce utile?

La solution

Jetty does NOT automatically starts the debugger. You most likely have set the MAVEN_OPTS environment variable to include -Xdebug parameters. Check with 'echo $MAVEN_OPTS' and you will see something like:

-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n

You can't run two maven processes which both try to debug on port 8787. So change your global MAVEN_OPTS (in .bash_profile when running on osx) or change your MAVEN_OPTS for your second terminal session:

export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=512M"

Autres conseils

Enter the below command in terminal / command prompt

killall -9 java

It will kill all the java processes. You will be able to use the port then.

Try this configuration inside jetty plugin

<configuration>
    <connectors>
        <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
            <port>9090</port>
        </connector>
    </connectors>
</configuration>

Or alternatively, run jetty from command line this way

mvn -Djetty.port=9090 jetty:run
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top