最近做一个项目,用spring的httpinvoker远程调用方式,配置成功了。。一切没有问题。为了更加完美,考虑到假如服务提供方的服务出现问题,链接不上,那么客户端连接就一直会等待,这样对客户来说,是很不好的方式,,,10几秒没有反映。。。最后还会报cannot connect to 某某 ip 某某服务。。
不知道httpinvoker对服务的超时问题可以在什么地方配置不?
为了大家了解我配置的httpinvoker。把相关的代码贴出来。。。
首先是服务器端:
web.xml
[code=Java]
<servlet>
<servlet-name>remote</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
remote-servlet.xml
[code=Java]
</bean>
<bean name="/requestXmlData" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
<property name="service">
<ref bean="xml"/>
</property>
<property name="serviceInterface">
<value>com.eway.wap.remote.businessinterface.RequestParser</value>
</property>
</bean>
spring的配置文件中
[code=Java]
<!--httpinvoker服务器端配置-->
<bean id="xml" class="com.eway.wap.remote.businessinterface.RequestParserImpl"/>
客户端:
[code=Java]
<!--httpinvoker调用远程服务-->
<bean id="httpInvokerRequestParser"
class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
<property name="serviceUrl" value="eway"/>
<property name="httpInvokerRequestExecutor" ref="httpInvokerRequestExecutor"/>
<property name="serviceInterface" value="com.eway.wap.remote.businessinterface.RequestParser"/>
</bean>
<bean id="httpInvokerRequestExecutor" class="com.eway.wap.remote.invoke.httpinvoker.EwayHttpInvokerRequestExecutor"/>
------------------------------
附录:
使用到的java接口和类如下:
com.eway.wap.remote.businessinterface.RequestParser
[code=Java]
package com.eway.wap.remote.businessinterface;
import com.eway.wap.exception.sub.NotGetRemoteDataHttpInvokerException;
/**
* Created by IntelliJ IDEA.
* User: yuchen
* Date: 2008-9-24
* Time: 10:17:17
* To change this template use File | Settings | File Templates.
*/
public interface RequestParser {
/**
*
* @param _request
* @return
* @throws NotGetRemoteDataHttpInvokerException
*/
public String parse(String _request) ;
}
[code=Java]
package com.eway.wap.remote.businessinterface;
import com.eway.wap.exception.sub.NotGetRemoteDataHttpInvokerException;
import com.eway.wap.remote.axis.AxisJavaCallDotNet;
/**
* Created by IntelliJ IDEA.
* User: yuche
* Date: 2008-9-24
* Time: 10:40:19
* To change this template use File | Settings | File Templates.
*/
public class RequestParserImpl implements RequestParser {
public String parse(String requestXml) {
System.out.println("***************************************requestXml:"+requestXml);
return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<response>\n" +
"\t<sysid>0001</sysid>\n" +
"\t<sysname></sysname>\n" +
"\t<user>123123</user>\n" +
"\t<type>wapdata</type>\n" +
"\t<date></date>\n" +
"\t<list>\n" +
"\t\t<item date=\"2008-9-20\">工程管理待办列表(10)</item>\n" +
"\t\t<item date=\"2008-9-20\">工程管理已办列表(7)</item>\n" +
"\t</list>\n" +
"</response>";
}
}
[code=Java]
package com.eway.wap.remote.businessinterface;
/**
* Created by IntelliJ IDEA.
* User: yuchen
* Date: 2008-11-8
* Time: 11:27:36
* To change this template use File | Settings | File Templates.
*/
public interface HttpInvokerRequestParser extends RequestParser{
/**
*
* @param _request
* @return
* @throws com.eway.wap.exception.sub.NotGetRemoteDataHttpInvokerException
*/
public String parse(String _request) ;
}
[code=Java]
package com.eway.wap.remote.invoke.httpinvoker;
import com.eway.wap.core.context.RemoteServiceContextHolder;
import org.springframework.remoting.httpinvoker.HttpInvokerClientConfiguration;
import org.springframework.remoting.httpinvoker.SimpleHttpInvokerRequestExecutor;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import sun.net.www.protocol.http.HttpURLConnection;
public class EwayHttpInvokerRequestExecutor extends SimpleHttpInvokerRequestExecutor {
protected HttpURLConnection openConnection(HttpInvokerClientConfiguration config) throws IOException {
String serviceUrl = RemoteServiceContextHolder.getContext().getServiceUrl();
System.out.println("serviceUrl========"+serviceUrl);
URLConnection con = new URL(serviceUrl).openConnection();
if (!(con instanceof HttpURLConnection)) {
throw new IOException("Service URL [" + config.getServiceUrl() + "] is not an HTTP URL");
}
return (HttpURLConnection) con;
}
}
大体就是这样。。。
现在遇到的问题。。就是考虑到,加入服务器段出现故障(服务器停了,电源故障,====),反正是客户段不能正常的访问了,,那么客户段回一直等待,,,为了避免长时间的等待,,不知道怎么设置。。。httpinvoker如何处理超时问题。。。。
交流也可以,我的一个java的Q..Q 群号:26572256
分享到:
相关推荐
**Spring HttpInvoker的封装** 在Java企业级应用开发中,Spring框架因其强大的功能和灵活性而被广泛应用。HttpInvoker是Spring框架的一部分,它提供了一种基于HTTP协议的远程调用机制,使得不同网络环境中的Java...
在分布式系统中,远程服务调用是常见的需求,Spring框架提供了多种远程服务支持,其中包括HttpInvoker。HttpInvoker是Spring框架的一部分,它允许开发者使用HTTP协议进行远程方法调用,而不需要额外的类库。与...
1. 性能优化:可以通过设置连接池、超时时间等参数来优化网络通信性能。另外,对于频繁调用的服务,可以考虑使用缓存来减少远程调用次数。 2. 安全性:由于HTTP Invoker基于HTTP,所以需要考虑HTTPS加密传输以防止...
HTTPInvoker是Spring框架中的一种远程调用机制,它允许客户端通过HTTP协议来调用服务器端的方法,实现远程服务的透明化访问。这个技术基于HTTP,所以具有较好的穿透性,适用于内网或者对安全性要求不高的环境。在这...
HttpClient 4.5与Spring框架有良好的集成,可以通过Spring的`HttpInvoker`或`RestTemplate`来方便地调用HttpClient,简化代码。 7. **最佳实践** - 适当设置连接池大小,避免资源浪费。 - 使用HTTP/2和SPDY提升...
它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...
Dubbo是一款高性能、轻量级的开源RPC框架,提供服务自动注册、自动发现等高效服务治理方案,可以和Spring框架无缝集成。在分布式系统中,Dubbo扮演着核心角色,提供了服务自动注册、自动发现、软负载均衡、容错机制...
它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...
它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...
它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...
它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...
它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...
它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...
它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...
它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...
它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...
它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...
它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...
它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...
3. **dubbo-rpc**: 提供了多种RPC实现,如Dubbo自身的Invoker、Exporter机制,以及对其他RPC框架如Hessian、RMI、HTTP的支持。这个模块是Dubbo实现远程方法调用的关键。 4. **dubbo-cluster**: 集群层负责服务的...