dubbox 在实际项目中的使用 蔚落 2022-06-06 06:56 182阅读 0赞 dubbox的github地址: [https://github.com/dangdangdotcom/dubbox][https_github.com_dangdangdotcom_dubbox] 先下载下来,在pom.xml文件中修改jdk版本 mvn clean package install -Dmaven.test.skip=true 如果报错,查看缺少什么jar包,删除jar包,重新执行上面的命令 dubbox是需要zookeeper的,所以必须要先安装zk。 dubbox可以将服务既发布成dubbo,也可以发布成rest。 在build.gradle中配置,这里只是简单的配了一下 import org.gradle.plugins.ide.eclipse.model.Facet apply plugin:'war' apply plugin:'eclipse-wtp' sourceCompatibility=1.8 targetCompatibility=1.8 [compileJava,compileTestJava]*.options*.encoding='UTF-8' ext{ springVersion='4.3.6.RELEASE' } repositories { maven {url "http://maven.aliyun.com/nexus/content/groups/public/"} maven { url "http://repo.maven.apache.org/maven2" } } dependencies { compile fileTree(dir:'src/main/webapp/WEB-INF/lib',include:'*.jar',exclude:'commons-httpclient-3.0.jar') compile 'org.apache.axis:axis:1.4' compile 'commons-discovery:commons-discovery:0.2' compile 'wsdl4j:wsdl4j:1.6.3' compile "org.springframework:spring-context:${springVersion}" compile "org.springframework:spring-web:${springVersion}" //dubbox需要的jar compile('com.alibaba:dubbo:2.8.4') compile('com.github.sgroschupf:zkclient:0.1') compile("org.apache.zookeeper:zookeeper:3.4.9") compile('org.jboss.resteasy:resteasy-jaxrs:3.0.7.Final') compile('org.jboss.resteasy:resteasy-client:3.0.7.Final') compile('javax.validation:validation-api:1.0.0.GA') testCompile 'junit:junit:4.12' } eclipse { wtp { facet { facet name: 'jst.web', type: Facet.FacetType.fixed facet name: 'wst.jsdt.web', type: Facet.FacetType.fixed facet name: 'jst.java', type: Facet.FacetType.fixed facet name: 'jst.web', version: '3.0' facet name: 'jst.java', version: '1.8' facet name: 'wst.jsdt.web', version: '1.0' } } } 在src/main/resources下新建dubbo.properties文件(必须是dubbo命名的) dubbo.application.logger=slf4j dubbo.application.name=maven-demo dubbo.application.owner=qinwei dubbo.registry.address=zookeeper://zk的ip:2181 #这个端口号一定要与tomcat的端口号相同 dubbo.protocol.rest.port=8080 #dubbo.protocol.rest.threads=2 #dubbo.protocol.rest.accepts=10 #这个最好和你的工程名相同,如果比你的工程名短,直接启动报错. dubbo.protocol.rest.contextpath=dubbo-demo #如果是servlet,必须在web.xml中配置dispatchServlet dubbo.protocol.rest.server=servlet dubbo.protocol.dubbo.port=20880 dubbo.reference.timeout=10000 dubbo.provider.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <dubbo:service interface="com.dubbo.RestService" ref="restServiceImpl" protocol="rest" /> </beans> dubbo.consumer.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <dubbo:reference id="restService" interface="com.dubbo.RestService" check="false"/> </beans> web.xml <!--必须在spring的listener之前 --> <listener> <listener-class>com.alibaba.dubbo.remoting.http.servlet.BootstrapListener</listener-class> </listener> <!-- dubbo.properties中配的是servlet的话,必须要配置下面--> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>com.alibaba.dubbo.remoting.http.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> import javax.ws.rs.Consumes; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import com.alibaba.dubbo.rpc.protocol.rest.support.ContentType; @Path("/dubbox") @Consumes({ MediaType.APPLICATION_JSON, MediaType.TEXT_XML }) @Produces({ ContentType.APPLICATION_JSON_UTF_8, ContentType.TEXT_XML_UTF_8 }) public interface RestService { @POST @Path("/testRest") String testRest(String json); } } import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; @Service("restServiceImpl") public class RestServiceImpl implements RestService { private static final Logger LOGGER = LoggerFactory.getLogger(RestServiceImpl.class); @Override public String testRest(String json) { LOGGER.debug(json); return "{\"name\":\"qw\"}"; } } 调用dubbo服务直接引入对应的API的jar就可以了 调用rest服务需要暴露服务器的ip和端口号,调用地址是 [http://IP][http_IP]:配置的dubbo.protocol.rest.port/dubbo.protocol.rest.contextpath/接口上的@path/方法上的@path 如果是非dubbo(比如用httpclient的方式)调用rest服务,必须要注意设置contentType,要和@Consumes指定的格式一样,否则是调不通的 [https_github.com_dangdangdotcom_dubbox]: https://github.com/dangdangdotcom/dubbox [http_IP]: http://IP
相关 Feign在实际项目中使用详解 Feign在实际项目中使用详解 简介 一 Feign客户端应该如何提供? 二 Feign调用的接口要不要进行包装? 2.1.问题描述 墨蓝/ 2023年10月15日 11:18/ 0 赞/ 7 阅读
相关 Jwt在Java项目中的简单实际应用 1.什么是jwt 双方之间传递安全信息的简洁的、URL安全的表述性声明规范。JWT作为一个开放的标准([RFC 7519][]),定义了一种简洁的,自包含的方法用于通信双 女爷i/ 2022年11月26日 04:00/ 0 赞/ 207 阅读
相关 ActiveMQ在分布式项目中的实际应用 点击关注公众号,利用碎片时间学习![809c45a10b7156f19d8456df3af365fc.png][] 具体需求: 后台添加商品后,需要执行两个操作: 1 清疚/ 2022年09月02日 05:24/ 0 赞/ 170 阅读
相关 dubbox 在实际项目中的使用 dubbox的github地址: [https://github.com/dangdangdotcom/dubbox][https_github.com_dangdangdot 蔚落/ 2022年06月06日 06:56/ 0 赞/ 183 阅读
相关 实际项目使用RabbitMq 大家在项目里面应该都用过MQ,MQ作为解耦神器,还是很有必要学习的。 RabbitMQ是基于AMQP(高级消息队列协议)。支持多种操作系统,支持多种语言。 ![501598 约定不等于承诺〃/ 2022年05月19日 12:36/ 0 赞/ 172 阅读
相关 策略模式在实际项目中的应用二 \\\\测试demo git仓库地址:[https://github.com/alwaysInRoad/test-strategy-demo2.git][https_gi 阳光穿透心脏的1/2处/ 2022年05月08日 08:33/ 0 赞/ 212 阅读
相关 策略模式在实际项目中的应用一 \\\\测试demo git仓库地址:[https://github.com/alwaysInRoad/test-strategy-demo1.git][https_gi 亦凉/ 2022年05月08日 06:16/ 0 赞/ 253 阅读
相关 装饰器模式在实际项目中的应用 关于装饰器模式 定义:装饰器模式又名包装(Wrapper)模式。装饰器模式以对客户端透明的方式拓展对象的功能,是继承关系的一种替代方案。 重点:装饰 ゝ一世哀愁。/ 2022年04月08日 11:21/ 0 赞/ 203 阅读
相关 GitFlow在实际中使用的摸索 GitFlow在实际中使用的摸索 > 网上介绍Git Flow的博客非常多,本文参考了网上的资料,结合自己以往使用Git中的一些心得体会和思考,重新总结和归纳,最重要的是 约定不等于承诺〃/ 2022年03月10日 16:20/ 1 赞/ 201 阅读
还没有评论,来说两句吧...