当Web服务不可用时,生成的代理不会抛出EndpointNotFound或类似内容

时间:2012-03-09 07:50:27

标签: web-services java-ee eclipse-wtp

我有一个无缝工作的WCF Web服务。现在的目标是生成一个Java代理来访问此Web服务。我已经安装了带有WTP扩展的最新Eclipse并生成了WebClient(代理,存根等)。我做了一个成功的网络服务电话。另一方面,当我关闭Web服务时,呼叫也成功了。我做错了什么,当服务不可用时,代理不会抛出EndpointNotFoundException或RemoteException吗?
这是我的示例代码:

try
{
  IRemoteControlProxy rc = new IRemoteControlProxy("http://localhost:666/MyService");
  rc.InsertOrUpdate(0, new DtoObj());
}
catch (RemoteException e)
{
   System.out.println(e);
}
catch (ServiceException e)
{
  System.out.println(e);
}
System.out.println("No exception");

即使通话必定失败,我也只能获得“无异常”。我检查了代理中的默认URL,并且没有在此URL上运行的Web服务,我使用Internet Explorer仔细检查了URL。我仍然没有得到任何EndpointNotFoundException,为什么?我是否实例化了正确的对象(以“代理”结尾的对象)?
请注意,如果服务正常运行,通信将无缝运行。

1 个答案:

答案 0 :(得分:0)

嗯,这里的问题是我在服务方法定义中添加了“IsOneWay”属性。在这种情况下,生成的代理调用invokeOneWay(),这基本上是火和忘记。当目标不可用时,此方法不会抛出任何异常。
如果我从服务方法定义中删除“IsOneWay”属性,代理会调用invoke(),当目标不可用时,它会抛出一个正确的异常。