最近项目使用webservice作为中转传输数据,要求使用jms来实现负载均衡,稍微研究了一下。
首先是配置jms。在weblogic中配置JMS十分方便,进入控制台在域结构中找到JMS服务器和JMS模块,分别新建一个JMS服务器和JMS模块。在JMS模块中新建一个连接工厂和队列,注意连接工厂和队列的jndi需要在程序中引用。
在程序中调用JMS可以使用jndi,因为使用了weblogic可以使用weblogic提供的jndi工厂来获取连接工厂和队列的实例。
System.setProperty(Context.INITIAL_CONTEXT_FACTORY, “weblogic.jndi.WLInitialContextFactory”);
System.setProperty(Context.PROVIDER_URL, “t3://localhost:7001”);
这两句在获取Context之前执行,让Context实例可以获取到weblogic的jndi工厂。然后使用Context的lookup方法通过刚才配置的jndi获取连接工厂和队列的实例。
关于实现webservice负载均衡,网上有很多例子,但是却运行不起来。我们项目中webservice使用了xfire,通过研究发现没有将ContentType一起转发,只要将ContentType转发就没有问题了,否则xfire将无法解析请求内容。
首先是配置jms。在weblogic中配置JMS十分方便,进入控制台在域结构中找到JMS服务器和JMS模块,分别新建一个JMS服务器和JMS模块。在JMS模块中新建一个连接工厂和队列,注意连接工厂和队列的jndi需要在程序中引用。
在程序中调用JMS可以使用jndi,因为使用了weblogic可以使用weblogic提供的jndi工厂来获取连接工厂和队列的实例。
System.setProperty(Context.INITIAL_CONTEXT_FACTORY, “weblogic.jndi.WLInitialContextFactory”);
System.setProperty(Context.PROVIDER_URL, “t3://localhost:7001”);
这两句在获取Context之前执行,让Context实例可以获取到weblogic的jndi工厂。然后使用Context的lookup方法通过刚才配置的jndi获取连接工厂和队列的实例。
关于实现webservice负载均衡,网上有很多例子,但是却运行不起来。我们项目中webservice使用了xfire,通过研究发现没有将ContentType一起转发,只要将ContentType转发就没有问题了,否则xfire将无法解析请求内容。