我有一个以前存在的以SOAP为基础的网络服务,我要提供一种基于污染的长期通知系统。 我如何执行? 客户目前是贾瓦 desktop desktop desktop富客户,必须从其他相关客户那里得到更新。 服务器是玻璃天花。 我有一个基本障碍——www.WebMethod,但我因使用而遇到问题。 这里有一些显示网络方法概念的假体编码:
@WebService(serviceName="mywebservice")
@Stateless
public class MyWebService {
@WebMethod
public String longPoll() {
short ct = 0;
while(someCondition == false && ct < 60) {
sleep(1000); // 1 sec
ct++;
}
if (someCondition)
return "got value";
else
return "";
}
}
在客户方面,我 calling声地利用未来目标:
public Future<?> requestLongPollAsync(Date lastUpdate,
AsyncHandler<LongPollResponse> handler) {
try {
return mywebservice.longPollAsync(getXMLGregorianCalendar(lastUpdate),
handler);
}
// ...
}
客户方面似乎在工作。 然而,我有两个问题产生于这个问题,这似乎是由于网络服务呼吁的持久性质:
- Each requester uses an active http listener, so this is not scalable,
- When the client disconnects, GlassFish throws an exception (SSL exception, as all calls must go through the secure SSL listener (by default, http-listener-2)).
我是否需要使用 com。 EJB3.1 @Asynchronous annotation do any here? 我发现的所有例子都依赖Serlet AP、AJAX和其他不适用的技术。 谢谢。