问一个小白问题,就是dubbo.jetty.port可以暴露服务让 客户访问,那为什么还要jetty呢?

输入您需解决的
软件开发问题并开始搜索,
IT异常查询网可以方便地提供各类
程序错误解决方案。
阿里巴巴开源服务框架Dubbo2.0.8公布 - 开源软件
&&&发布于: 21:54:54&&&
阿里巴巴开源服务框架Dubbo2.0.8发布
阿里巴巴开源服务框架Dubbo2.0.8版本发布了,增加了Zookeeper和Multicast注册中心,RMI和Hessian协议,以及修复了一些BUG。Dubbo2.0.8下载地址:/wiki/display/dubbo/DownloadDubbo2.0.8发布记录:/jira/secure/ReleaseNote.jspa?projectId=10040&version=10160New Feature[DUBBO-3] - 实现与zookeeper注册中心的桥接[DUBBO-14] - 增加RMI协议的开源[DUBBO-15] - 增加Hessian协议的开源[DUBBO-16] - 增加Multicast注册中心的开源[DUBBO-19] - &dubbo:protocol&增加register="false"属性,表示该协议不注册到注册中心。[DUBBO-30] - remoting reconnect功能在config层增加配置项Bug[DUBBO-1] - Change schema element "sent" default value to false[DUBBO-2] - 停止时,程序和ShutdownHook重复调用了destroy。[DUBBO-4] - Dubbo Serialization序列化BigInteger空指针错误[DUBBO-7] - PojoUtils(generalize/realize)出错,类型丢失[DUBBO-11] - Future :访问超时时,可能会有NPE问题[DUBBO-17] - 多个注册中心指定一个注册中心引用无效[DUBBO-18] - rmi protocol can't handle biz exception[DUBBO-20] - 设置delay属性导致服务一直处理禁用状态[DUBBO-22] - refer.autodestory功能存在资源泄漏的风险。[DUBBO-31] - consumer sticky配置项丢失[DUBBO-32] - 在linux server上和本地连不上nettyserver时抛出来的异常不一致[DUBBO-39] - hessian协议的timeout没有wrap为RpcException[DUBBO-42] - Wrapper类使用javassit低版本的时遇到的NoClassDefFoundError问题[DUBBO-43] - 解决cluseter(除了failover以外)在无invoker时的空指针[DUBBO-44] - fix 2.0.8无法调用1.0.x[DUBBO-47] - rmi 协议对2.0.8之前版本不兼容[DUBBO-48] - AccessLogFilter在只写文件名的情况下NPE[DUBBO-50] - 迁移错误的扩展点位置[DUBBO-59] - Monitor 地址配置错误的情况下导致循环调用[DUBBO-60] - exchange codec decodeResponseData的重载方法调用错误[DUBBO-61] - 还原Restable接口的reset(Parametes parametes )方法保持与2.0.5之前版本的api兼容[DUBBO-65] - server graceful shutdown 问题[DUBBO-69] - 修复FailoverClusterInvoker丢失error codeImprovement[DUBBO-9] - ExtensionLoader增加获取DefaultExtension的方法[DUBBO-12] - 拆分不同实现为子模块[DUBBO-13] - 为ReflectUtils增加cache[DUBBO-21] - 整理UrlUtils[DUBBO-34] - TraceFilter中达到trace.count后,从tracersMap中去掉Channel[DUBBO-35] - LazyConnectExchangeClient去掉不必要的Wrapper[DUBBO-36] - ExtensionLoader读取属性文件时可以有注释、固定用UTF8读取[DUBBO-45] - Reference的初始化时出Remoting异常后,Reference没有捕捉,导致直接抛出Remoting异常,不能方便诊断是哪个Service出错[DUBBO-49] - Injvm的端口总是置为0,以免因配置端口导致不可用[DUBBO-51] - 配有多协议时,必须指定缺省协议,否则报错[DUBBO-52] - Remoting中的类使用的是父类的Logger,导致异常信息排查不方便[DUBBO-53] - Remoting Client连接出错时,会重试时打出异常栈的日志应该给出*会重试*的说明
请教下:看到您的dubbo协议是采用单连接、长连接的方式,如果有并发的写入,会不会出错?& 并发的写入,不会出错,Dubbo有头信息标识请求ID。sodarfish 写道另外,这里的rmi和jdk自带的那个有什么区别? 也需要单独的rmi registry么? 因线上的服务,通常是:小数据量的,大并发的请求,提供者远少于消费者,Dubbo协议对这些做了择优策略。
sodarfish 写道请教下:看到您的dubbo协议是采用单连接、长连接的方式,如果有并发的写入,会不会出错?& 并发的写入,不会出错,Dubbo有头信息标识请求ID。sodarfish 写道另外,这里的rmi和jdk自带的那个有什么区别? 也需要单独的rmi registry么? 因线上的服务,通常是:小数据量的,大并发的请求,提供者远少于消费者,Dubbo协议对这些做了择优策略。往同一个socket连接里写,不会出现一个线程还没写完,另一个就插数据进去的情况么?
往同一个socket连接里写,不会出现一个线程还没写完,另一个就插数据进去的情况么?不会,消息是用队列排队发出的,这一块是由netty/mina/grizzly封装的。
请问一下:如果将hessian服务通过servlet发布,和web应用公用一个端口(假设是80),如果我的服务不想被外网的人看到,如何保证其安全性呢?你可以开启token验证,如:
&!--随机产生UUID做为token--&
&dubbo:protocol name="hessian" token="true" /&
这个token会通过注册中心下发给提供者,基于注册中心发现的方式调用不会受影响,点对点直连就会被控制住。
请问一下:如果将hessian服务通过servlet发布,和web应用公用一个端口(假设是80),如果我的服务不想被外网的人看到,如何保证其安全性呢?可以参见:/wiki/display/dubbo/User+Guide#UserGuide-TokenVerify
俺运行了一下,报了java.lang.ClassNotFoundException: com.alibaba.dubbo.container.spring.JettyContainer这个错误,然后我看JettyContainer的类是在com.alibaba.dubbo.container.jetty中,而services配的是com.alibaba.dubbo.container.spring.JettyContainer是不是配错了?是的,2.0.8的container模块有bug,container模块在2.0.9才开始使用。
还有个问题,为什么不把使用动态生成类修改成使用asm,在把asm引入到工程中,象fastjson那样处理,又可以减少javassist的依赖了ProxyFactory是一个扩展点,因为asm生成代理可读性差,并且性能上优势没有想像的大,后续如果有时间,会加一个AsmProxyFactory,有兴趣的朋友,也可以自己加上。
dubbo的源码写的非常经典,功能很强大,自适应扩展,切片都比较的强。在看了NettyHandler的代码中,实际private final URL 在有多个服务暴露的时候,对应在一个通道上,因此这个属性貌似没有什么作用。实际处理还是根据Request参数找到对应的exporter进行处理的NettyHandler中的url上的属性,只有protocol相关的有意义,service相关的不能讯取,就像你说的,因为多个service共享一个连接。
相关解决方法
你也许会喜欢
Web前端&&热门解决方法
Web前端&&最新解决方法
Web前端&&随机解决方法
诚心交换友情链接:qq:dubbo是一个分布式的服务架构,可直接用于生产环境作为SOA服务框架。
官网首页:http://dubbo.io/ ,官方用户指南 http://dubbo.io/User+Guide-zh.htm上面的几张图画得不错,完全可以当做SOA架构的学习资料
淘宝将这个项目开源出来以后,得到了不少同行的支持,包括:
当当网的扩展版本dubbox :/dangdangdotcom/dubbox
京东的扩展版本jd-hydra: http://www.oschina.net/p/jd-hydra
不过,略有遗憾的是,据说在淘宝内部,dubbo由于跟淘宝另一个类似的框架HSF(非开源)有竞争关系,导致dubbo团队已经解散(参见http://www.oschina.net/news/55059/druid-1-0-9 中的评论),反到是当当网的扩展版本仍在持续发展,墙内开花墙外香。
不管如何,能在阿里、当当、京东这些大型网站正式使用的框架,总不至于差到哪里去。
本文下面的示例均基于当当的dubbox版本,由于dubbox并没向maven提交编译后的jar包,所以只能从github clone代码到本地编译得到jar包。
编译及测试步骤:(以下步骤全在windows环境中完成)
1. 本机先安装github on Windows的客户端,将在path路径中,把git.exe加进去
2. 命令行下&git clone /dangdangdotcom/dubbox 把代码拉到本地
3.&mvn install -Dmaven.test.skip=true 跳过测试编译
4. 在本机,参考zoo.cfg如下:
tickTime=2000initLimit=10syncLimit=5dataDir=D:/java/zookeeper-3.4.6/datadataLogDir=D:/java/zookeeper-3.4.6/logclientPort=2181server.1=localhost:
然后输入 bin/zkServer.cmd 启用zookeeper
5. intellij Idea中导入源码
6. 运行&\dubbox\dubbo-demo\dubbo-demo-provider\src\test\java\com\alibaba\dubbo\demo\provider\DemoProvider.java&
把服务提供方跑起来,成功后,可以在ZK里,用 ls / 看下,会发现zk里多出了一个dubbo的节点,所有服务全注册在这里了
7. 运行\dubbox\dubbo-demo\dubbo-demo-consumer\src\test\java\com\alibaba\dubbo\demo\consumer\DemoConsumer.java
服务销售方调用测试,可以看console里的输出
8. 运行\dubbox\dubbo-demo\dubbo-demo-consumer\src\test\java\com\alibaba\dubbo\demo\consumer\RestClient.java
跑一下rest调用
9. 浏览器访问&http://localhost:8888/services/users/100.xml 或&http://localhost:8888/services/users/100.json
dubbox官方的示例,虽然已经很简单了,但是对于初次接触的人来讲,仍然略显复杂,下面的代码在其基础上简化了一下:
一、先定义服务接口及传输对象DTO
项目结构如下
package yjmyzz.dubbo.demo.
import org.codehaus.jackson.annotate.JsonP
import javax.validation.constraints.M
import javax.validation.constraints.NotN
import javax.validation.constraints.S
import javax.xml.bind.annotation.XmlAccessT
import javax.xml.bind.annotation.XmlAccessorT
import javax.xml.bind.annotation.XmlE
import javax.xml.bind.annotation.XmlRootE
import java.io.S
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class User implements Serializable {
@JsonProperty("username")
@XmlElement(name = "username")
@Size(min = 6, max = 50)
public User() {
public User(Long id, String name) {
this.name =
public Long getId() {
public void setId(Long id) {
public String getName() {
public void setName(String name) {
this.name =
public String toString() {
return "User (" +
"id=" + id +
", name='" + name + '\'' +
UserService.java
package yjmyzz.dubbo.demo.
public interface UserService {
User getUser(Long id);
UserRestService.java
package yjmyzz.dubbo.demo.
import javax.validation.constraints.M
public interface UserRestService {
User getUser(@Min(value = 1L, message = "User ID must be greater than 1") Long id);
1 &?xml version="1.0" encoding="UTF-8"?&
2 &project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&
&modelVersion&4.0.0&/modelVersion&
&groupId&</blogs.yjmyzz&/groupId&
&artifactId&dubbo-hello-api&/artifactId&
&version&0.1&/version&
&dependencies&
&dependency&
&groupId&com.alibaba&/groupId&
&artifactId&dubbo&/artifactId&
&version&2.8.4&/version&
&/dependency&
&dependency&
&groupId&javax.validation&/groupId&
&artifactId&validation-api&/artifactId&
&version&1.0.0.GA&/version&
&/dependency&
&dependency&
&groupId&javax.annotation&/groupId&
&artifactId&javax.annotation-api&/artifactId&
&version&1.2&/version&
&/dependency&
&dependency&
&groupId&org.codehaus.jackson&/groupId&
&artifactId&jackson-mapper-asl&/artifactId&
&version&1.9.12&/version&
&/dependency&
&/dependencies&
39 &/project&
二、定义服务生产者(即:服务接口的实现方)
UserServiceImpl.java
package yjmyzz.dubbo.demo.
import yjmyzz.dubbo.demo.api.U
import yjmyzz.dubbo.demo.api.UserS
public class UserServiceImpl implements UserService {
public User getUser(Long id) {
return new User(id, "username" + id);
UserRestServiceImpl.java
package yjmyzz.dubbo.demo.
import com.alibaba.dubbo.rpc.RpcC
import com.alibaba.dubbo.rpc.protocol.rest.support.ContentT
import yjmyzz.dubbo.demo.api.U
import yjmyzz.dubbo.demo.api.UserRestS
import yjmyzz.dubbo.demo.api.UserS
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import javax.ws.rs.*;
import javax.ws.rs.core.MediaT
@Path("users")
@Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_XML})
@Produces({ContentType.APPLICATION_JSON_UTF_8, ContentType.TEXT_XML_UTF_8})
public class UserRestServiceImpl implements UserRestService {
private UserService userS
public void setUserService(UserService userService) {
this.userService = userS
@Path("{id : \\d+}")
public User getUser(@PathParam("id") Long id) {
if (RpcContext.getContext().getRequest(HttpServletRequest.class) != null) {
System.out.println("Client IP address from RpcContext: " + RpcContext.getContext().getRequest(HttpServletRequest.class).getRemoteAddr());
if (RpcContext.getContext().getResponse(HttpServletResponse.class) != null) {
System.out.println("Response object from RpcContext: " + RpcContext.getContext().getResponse(HttpServletResponse.class));
return userService.getUser(id);
DemoProvider.java
package yjmyzz.dubbo.demo.
import org.springframework.context.support.ClassPathXmlApplicationC
import java.io.IOE
public class DemoProvider {
public static void main(String[] args) throws IOException {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath*:META-INF/spring/*.xml");
context.start();
System.out.println("服务已经启动...");
System.in.read();
配置文件:resources\META-INF\spring\dubbo-demo-provider.xml
1 &?xml version="1.0" encoding="UTF-8"?&
3 &beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
/schema/dubbo /schema/dubbo/dubbo.xsd"&
&dubbo:application name="demo-provider" owner="programmer" organization="dubbox"/&
&dubbo:registry address="zookeeper://127.0.0.1:2181"/&
&dubbo:protocol name="dubbo" serialization="kryo" optimizer="yjmyzz.dubbo.demo.api.SerializationOptimizerImpl"/&
&!-- use tomcat server --&
&dubbo:protocol name="rest" port="8888" threads="500" contextpath="services" server="tomcat" accepts="500"
extension="com.alibaba.dubbo.rpc.protocol.rest.support.LoggingFilter"/&
&dubbo:service interface="yjmyzz.dubbo.demo.api.UserService" ref="userService" protocol="dubbo" /&
&dubbo:service interface="yjmyzz.dubbo.demo.api.UserRestService" ref="userRestService" protocol="rest"
validation="true"/&
&bean id="userService" class="yjmyzz.dubbo.demo.provider.UserServiceImpl"/&
&bean id="userRestService" class="yjmyzz.dubbo.demo.provider.UserRestServiceImpl"&
&property name="userService" ref="userService"/&
31 &/beans&
1 &?xml version="1.0" encoding="UTF-8"?&
2 &project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&
&modelVersion&4.0.0&/modelVersion&
&groupId&</blogs.yjmyzz&/groupId&
&artifactId&dubbo-hello-provider&/artifactId&
&version&0.1&/version&
&dependencies&
&!--公用的服务接口--&
&dependency&
&groupId&</blogs.yjmyzz&/groupId&
&artifactId&dubbo-hello-api&/artifactId&
&version&0.1&/version&
&/dependency&
&dependency&
&groupId&com.alibaba&/groupId&
&artifactId&dubbo&/artifactId&
&version&2.8.4&/version&
&/dependency&
&dependency&
&groupId&org.javassist&/groupId&
&artifactId&javassist&/artifactId&
&version&3.15.0-GA&/version&
&/dependency&
&dependency&
&groupId&org.apache.mina&/groupId&
&artifactId&mina-core&/artifactId&
&version&1.1.7&/version&
&/dependency&
&dependency&
&groupId&org.glassfish.grizzly&/groupId&
&artifactId&grizzly-core&/artifactId&
&version&2.1.4&/version&
&/dependency&
&dependency&
&groupId&org.apache.httpcomponents&/groupId&
&artifactId&httpclient&/artifactId&
&version&4.2.1&/version&
&/dependency&
&dependency&
&groupId&com.alibaba&/groupId&
&artifactId&fastjson&/artifactId&
&version&1.1.39&/version&
&/dependency&
&dependency&
&groupId&com.thoughtworks.xstream&/groupId&
&artifactId&xstream&/artifactId&
&version&1.4.1&/version&
&/dependency&
&dependency&
&groupId&org.apache.bsf&/groupId&
&artifactId&bsf-api&/artifactId&
&version&3.1&/version&
&/dependency&
&dependency&
&groupId&org.apache.zookeeper&/groupId&
&artifactId&zookeeper&/artifactId&
&version&3.4.6&/version&
&/dependency&
&dependency&
&groupId&com.github.sgroschupf&/groupId&
&artifactId&zkclient&/artifactId&
&version&0.1&/version&
&/dependency&
&dependency&
&groupId&org.apache.curator&/groupId&
&artifactId&curator-framework&/artifactId&
&version&2.5.0&/version&
&/dependency&
&dependency&
&groupId&com.googlecode.xmemcached&/groupId&
&artifactId&xmemcached&/artifactId&
&version&1.3.6&/version&
&/dependency&
&dependency&
&groupId&org.apache.cxf&/groupId&
&artifactId&cxf-rt-frontend-simple&/artifactId&
&version&2.6.1&/version&
&/dependency&
&dependency&
&groupId&org.apache.cxf&/groupId&
&artifactId&cxf-rt-transports-http&/artifactId&
&version&2.6.1&/version&
&/dependency&
&dependency&
&groupId&org.apache.thrift&/groupId&
&artifactId&libthrift&/artifactId&
&version&0.8.0&/version&
&/dependency&
&dependency&
&groupId&com.caucho&/groupId&
&artifactId&hessian&/artifactId&
&version&4.0.7&/version&
&/dependency&
&dependency&
&groupId&javax.servlet&/groupId&
&artifactId&javax.servlet-api&/artifactId&
&version&3.1.0&/version&
&/dependency&
&dependency&
&groupId&org.mortbay.jetty&/groupId&
&artifactId&jetty&/artifactId&
&version&6.1.26&/version&
&exclusions&
&exclusion&
&groupId&org.mortbay.jetty&/groupId&
&artifactId&servlet-api&/artifactId&
&/exclusion&
&/exclusions&
&/dependency&
&dependency&
&groupId&log4j&/groupId&
&artifactId&log4j&/artifactId&
&version&1.2.16&/version&
&/dependency&
&dependency&
&groupId&org.slf4j&/groupId&
&artifactId&slf4j-api&/artifactId&
&version&1.6.2&/version&
&/dependency&
&dependency&
&groupId&redis.clients&/groupId&
&artifactId&jedis&/artifactId&
&version&2.1.0&/version&
&/dependency&
&dependency&
&groupId&javax.validation&/groupId&
&artifactId&validation-api&/artifactId&
&version&1.0.0.GA&/version&
&/dependency&
&dependency&
&groupId&org.hibernate&/groupId&
&artifactId&hibernate-validator&/artifactId&
&version&4.2.0.Final&/version&
&/dependency&
&dependency&
&groupId&javax.cache&/groupId&
&artifactId&cache-api&/artifactId&
&version&0.4&/version&
&/dependency&
&dependency&
&groupId&org.jboss.resteasy&/groupId&
&artifactId&resteasy-jaxrs&/artifactId&
&version&3.0.7.Final&/version&
&/dependency&
&dependency&
&groupId&org.jboss.resteasy&/groupId&
&artifactId&resteasy-client&/artifactId&
&version&3.0.7.Final&/version&
&/dependency&
&dependency&
&groupId&org.jboss.resteasy&/groupId&
&artifactId&resteasy-netty&/artifactId&
&version&3.0.7.Final&/version&
&/dependency&
&dependency&
&groupId&org.jboss.resteasy&/groupId&
&artifactId&resteasy-jdk-http&/artifactId&
&version&3.0.7.Final&/version&
&/dependency&
&dependency&
&groupId&org.jboss.resteasy&/groupId&
&artifactId&resteasy-jackson-provider&/artifactId&
&version&3.0.7.Final&/version&
&/dependency&
&dependency&
&groupId&org.jboss.resteasy&/groupId&
&artifactId&resteasy-jaxb-provider&/artifactId&
&version&3.0.7.Final&/version&
&/dependency&
&dependency&
&groupId&org.apache.tomcat.embed&/groupId&
&artifactId&tomcat-embed-core&/artifactId&
&version&8.0.11&/version&
&/dependency&
&dependency&
&groupId&org.apache.tomcat.embed&/groupId&
&artifactId&tomcat-embed-logging-juli&/artifactId&
&version&8.0.11&/version&
&/dependency&
&dependency&
&groupId&com.esotericsoftware.kryo&/groupId&
&artifactId&kryo&/artifactId&
&version&2.24.0&/version&
&/dependency&
&dependency&
&groupId&de.javakaffee&/groupId&
&artifactId&kryo-serializers&/artifactId&
&version&0.26&/version&
&/dependency&
&dependency&
&groupId&de.ruedigermoeller&/groupId&
&artifactId&fst&/artifactId&
&version&1.55&/version&
&/dependency&
&/dependencies&
240 &/project&
测试时,运行DemoProvider中的main方法即可启动服务,所有服务注册在ZooKeeper,层次结构类似下面这样:
/dubbo/yjmyzz.dubbo.demo.api.UserRestService
/dubbo/yjmyzz.dubbo.demo.api.UserRestService/providers
/dubbo/yjmyzz.dubbo.demo.api.UserRestService/configurators
/dubbo/yjmyzz.dubbo.demo.api.UserService
/dubbo/yjmyzz.dubbo.demo.api.UserService/providers
/dubbo/yjmyzz.dubbo.demo.api.UserService/configurators
三、服务消费方
DemoConsumer.java
package yjmyzz.dubbo.demo.
import org.springframework.context.support.ClassPathXmlApplicationC
import yjmyzz.dubbo.demo.api.UserS
import javax.ws.rs.client.C
import javax.ws.rs.client.ClientB
import javax.ws.rs.client.WebT
import javax.ws.rs.core.R
public class DemoConsumer {
public static void main(String[] args) {
final String port = "8888";
//测试Rest服务
getUser("http://localhost:" + port + "/services/users/1.json");
getUser("http://localhost:" + port + "/services/users/1.xml");
//测试常规服务
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath*:META-INF/spring/*.xml");
context.start();
UserService userService = context.getBean(UserService.class);
System.out.println(userService.getUser(1L));
private static void getUser(String url) {
System.out.println("Getting user via " + url);
Client client = ClientBuilder.newClient();
WebTarget target = client.target(url);
Response response = target.request().get();
if (response.getStatus() != 200) {
throw new RuntimeException("Failed with HTTP error code : " + response.getStatus());
System.out.println("Successfully got result: " + response.readEntity(String.class));
} finally {
response.close();
client.close();
配置文件:resources\META-INF\spring\dubbo-hello-consumer.xml
1 &?xml version="1.0" encoding="UTF-8"?&
2 &beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
/schema/dubbo /schema/dubbo/dubbo.xsd"&
&dubbo:application name="demo-consumer" owner="programmer" organization="dubbox"/&
&dubbo:registry address="zookeeper://127.0.0.1:2181"/&
&dubbo:reference id="userRestService" interface="yjmyzz.dubbo.demo.api.UserRestService"/&
&dubbo:reference id="userService" interface="yjmyzz.dubbo.demo.api.UserService"/&
16 &/beans&
1 &?xml version="1.0" encoding="UTF-8"?&
2 &project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&
&modelVersion&4.0.0&/modelVersion&
&groupId&</blogs.yjmyzz&/groupId&
&artifactId&dubbo-hello-consumer&/artifactId&
&version&0.1&/version&
&dependencies&
&!--公用的服务接口--&
&dependency&
&groupId&</blogs.yjmyzz&/groupId&
&artifactId&dubbo-hello-api&/artifactId&
&version&0.1&/version&
&/dependency&
&dependency&
&groupId&com.alibaba&/groupId&
&artifactId&dubbo&/artifactId&
&version&2.8.4&/version&
&/dependency&
&dependency&
&groupId&org.javassist&/groupId&
&artifactId&javassist&/artifactId&
&version&3.15.0-GA&/version&
&/dependency&
&dependency&
&groupId&org.apache.mina&/groupId&
&artifactId&mina-core&/artifactId&
&version&1.1.7&/version&
&/dependency&
&dependency&
&groupId&org.glassfish.grizzly&/groupId&
&artifactId&grizzly-core&/artifactId&
&version&2.1.4&/version&
&/dependency&
&dependency&
&groupId&org.apache.httpcomponents&/groupId&
&artifactId&httpclient&/artifactId&
&version&4.2.1&/version&
&/dependency&
&dependency&
&groupId&com.alibaba&/groupId&
&artifactId&fastjson&/artifactId&
&version&1.1.39&/version&
&/dependency&
&dependency&
&groupId&com.thoughtworks.xstream&/groupId&
&artifactId&xstream&/artifactId&
&version&1.4.1&/version&
&/dependency&
&dependency&
&groupId&org.apache.bsf&/groupId&
&artifactId&bsf-api&/artifactId&
&version&3.1&/version&
&/dependency&
&dependency&
&groupId&org.apache.zookeeper&/groupId&
&artifactId&zookeeper&/artifactId&
&version&3.4.6&/version&
&/dependency&
&dependency&
&groupId&com.github.sgroschupf&/groupId&
&artifactId&zkclient&/artifactId&
&version&0.1&/version&
&/dependency&
&dependency&
&groupId&org.apache.curator&/groupId&
&artifactId&curator-framework&/artifactId&
&version&2.5.0&/version&
&/dependency&
&dependency&
&groupId&com.googlecode.xmemcached&/groupId&
&artifactId&xmemcached&/artifactId&
&version&1.3.6&/version&
&/dependency&
&dependency&
&groupId&org.apache.cxf&/groupId&
&artifactId&cxf-rt-frontend-simple&/artifactId&
&version&2.6.1&/version&
&/dependency&
&dependency&
&groupId&org.apache.cxf&/groupId&
&artifactId&cxf-rt-transports-http&/artifactId&
&version&2.6.1&/version&
&/dependency&
&dependency&
&groupId&org.apache.thrift&/groupId&
&artifactId&libthrift&/artifactId&
&version&0.8.0&/version&
&/dependency&
&dependency&
&groupId&com.caucho&/groupId&
&artifactId&hessian&/artifactId&
&version&4.0.7&/version&
&/dependency&
&dependency&
&groupId&javax.servlet&/groupId&
&artifactId&javax.servlet-api&/artifactId&
&version&3.1.0&/version&
&/dependency&
&dependency&
&groupId&org.mortbay.jetty&/groupId&
&artifactId&jetty&/artifactId&
&version&6.1.26&/version&
&exclusions&
&exclusion&
&groupId&org.mortbay.jetty&/groupId&
&artifactId&servlet-api&/artifactId&
&/exclusion&
&/exclusions&
&/dependency&
&dependency&
&groupId&log4j&/groupId&
&artifactId&log4j&/artifactId&
&version&1.2.16&/version&
&/dependency&
&dependency&
&groupId&org.slf4j&/groupId&
&artifactId&slf4j-api&/artifactId&
&version&1.6.2&/version&
&/dependency&
&dependency&
&groupId&redis.clients&/groupId&
&artifactId&jedis&/artifactId&
&version&2.1.0&/version&
&/dependency&
&dependency&
&groupId&javax.validation&/groupId&
&artifactId&validation-api&/artifactId&
&version&1.0.0.GA&/version&
&/dependency&
&dependency&
&groupId&org.hibernate&/groupId&
&artifactId&hibernate-validator&/artifactId&
&version&4.2.0.Final&/version&
&/dependency&
&dependency&
&groupId&javax.cache&/groupId&
&artifactId&cache-api&/artifactId&
&version&0.4&/version&
&/dependency&
&dependency&
&groupId&org.jboss.resteasy&/groupId&
&artifactId&resteasy-jaxrs&/artifactId&
&version&3.0.7.Final&/version&
&/dependency&
&dependency&
&groupId&org.jboss.resteasy&/groupId&
&artifactId&resteasy-client&/artifactId&
&version&3.0.7.Final&/version&
&/dependency&
&dependency&
&groupId&org.jboss.resteasy&/groupId&
&artifactId&resteasy-netty&/artifactId&
&version&3.0.7.Final&/version&
&/dependency&
&dependency&
&groupId&org.jboss.resteasy&/groupId&
&artifactId&resteasy-jdk-http&/artifactId&
&version&3.0.7.Final&/version&
&/dependency&
&dependency&
&groupId&org.jboss.resteasy&/groupId&
&artifactId&resteasy-jackson-provider&/artifactId&
&version&3.0.7.Final&/version&
&/dependency&
&dependency&
&groupId&org.jboss.resteasy&/groupId&
&artifactId&resteasy-jaxb-provider&/artifactId&
&version&3.0.7.Final&/version&
&/dependency&
&dependency&
&groupId&org.apache.tomcat.embed&/groupId&
&artifactId&tomcat-embed-core&/artifactId&
&version&8.0.11&/version&
&/dependency&
&dependency&
&groupId&org.apache.tomcat.embed&/groupId&
&artifactId&tomcat-embed-logging-juli&/artifactId&
&version&8.0.11&/version&
&/dependency&
&dependency&
&groupId&com.esotericsoftware.kryo&/groupId&
&artifactId&kryo&/artifactId&
&version&2.24.0&/version&
&/dependency&
&dependency&
&groupId&de.javakaffee&/groupId&
&artifactId&kryo-serializers&/artifactId&
&version&0.26&/version&
&/dependency&
&dependency&
&groupId&de.ruedigermoeller&/groupId&
&artifactId&fst&/artifactId&
&version&1.55&/version&
&/dependency&
&/dependencies&
240 &/project&
其它注意事项:
dubbo构架中,zk充着&服务注册中心&的角色,所以生产者与消费者的xml配置文件中,都要配置zk地址,如果zk采用集群部署时,配置写法参考下面这样:
&dubbo:registry address="zookeeper://172.28.*.102:2181?backup=172.28.*.102:.*.102:2183"/&
dubbo还有一个管理界面,用于服务治理,包括启用/禁用服务,设置服务的路由规则(即:A地址的Consumer直接调用B机器的Provider,而不是由负载均衡算法分配)等等。
使用方法:将dubbo-admin这个项目编译成war包后,部署到jetty或其它兼容web server即可(当然要修改\WEB-INF\dubbo.properties里zk的地址)
部署完成后,访问管理界面时,默认用户名,密码均是root。
另外dubbo-monitor项目用于性能监控,可以用图表方式直观展示主要性能指标。
参考文章:
/archives/341.html
http://blog.csdn.net/wilsonke/article/details/
/thread--1.html
/magazines/103
http://dangdangdotcom.github.io/dubbox/rest.html
http://dangdangdotcom.github.io/dubbox/demo.html
阅读(...) 评论()

我要回帖

更多关于 jetty 发布dubbo服务 的文章

 

随机推荐