使用xml-properties的ESB Mule Client失败

时间:2012-10-05 20:40:44

标签: esb mule

我使用的是Mule 3.x

我有一个测试MuleClient连接的代码。

此测试没问题且工作正常:

public void testHello() throws Exception
    {
        MuleClient client = new MuleClient(muleContext);
        MuleMessage result = client.send("http://127.0.0.1:8080/hello", "some data", null);
        assertNotNull(result);
        assertNull(result.getExceptionPayload());
        assertFalse(result.getPayload() instanceof NullPayload);

        //TODO Assert the correct data has been received
        assertEquals("hello", result.getPayloadAsString());
    }

但是这个测试不行 - 它因连接异常而失败:

public void testHello_with_Spring() throws Exception {

    MuleClient client = new MuleClient("mule-config-test.xml");
    client.getMuleContext().start();

    //it fails here
    MuleMessage result = client.send("http://127.0.0.1:8080/hello", "some data", null);
    assertNotNull(result);

    assertNull(result.getExceptionPayload());
    assertFalse(result.getPayload() instanceof NullPayload);

    //TODO Assert the correct data has been received
    assertEquals("hello", result.getPayloadAsString());
}

两个测试中都使用'mule-config-test.xml',这个文件的路径没问题,我查了一下。

这是我最后的错误信息:

  

异常堆栈是:   1.已经在使用的地址(java.net.BindException)java.net.PlainSocketImpl:-2(null)   2.无法绑定到uri“http://127.0.0.1:8080/hello”(org.mule.transport.ConnectException)
  org.mule.transport.tcp.TcpMessageReceiver:81   (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/transport/ConnectException.html)   -------------------------------------------------- ------------------------------ Root异常堆栈跟踪:java.net.BindException:地址已经在   在java.net.PlainSocketImpl.socketBind(Native Method)中使用   java.net.PlainSocketImpl.bind(PlainSocketImpl.java:383)at   java.net.ServerSocket.bind(ServerSocket.java:328)       + 3个以上(设置调试级别日志记录或'-Dmule.verbose.exceptions = true'用于所有内容)

     
     

[10-05 16:33:37] ERROR HttpConnector [main]:   org.mule.transport.ConnectException:无法绑定到uri   “http://127.0.0.1:8080/hello”[10-05 16:33:37] ERROR ConnectNotifier   [main]:无法连接/重新连接:HttpConnector {
  name = connector.http.mule.default lifecycle = stop this = 7578a7d9
  numberOfConcurrentTransactedReceivers = 4
  createMultipleTransactedReceivers = true connected = false
  supportedProtocols = [http] serviceOverrides =}。根除外   是:地址已在使用中。键入:class java.net.BindException [10-05   16:33:37] ERROR DefaultSystemExceptionStrategy [main]:无法绑定   到uri“http://127.0.0.1:8080/hello”

     

org.mule.api.lifecycle.LifecycleException:无法将事件处理为   “connector.http.mule.default”已停止

1 个答案:

答案 0 :(得分:1)

我认为问题在于你没有展示的内容:testHello_with_Spring()可能正在执行,而Mule已经在运行。你从它开始的第二个骡子然后端口与另一个骡子冲突。

testHello()testHello_with_Spring()是否在同一个测试套件中?如果是,看到testHello()依赖于已经运行的Mule,我会说这将导致testHello_with_Spring()的端口冲突。