国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php框架 > 框架设计 > Dubbo的helloworld maven版

Dubbo的helloworld maven版

来源:程序员人生   发布时间:2016-06-16 14:04:24 阅读次数:3650次

在写dubbo的helloworld前,先安装zookeeper注册中心,阿里文档推荐用这个软件。我用的操作系统是ubuntu14.0.4 ,zookeeper版本zookeeper⑶.4.8,安装进程依照阿里提供的文档1步步来的:
http://dubbo.io/Administrator+Guide.htm#AdministratorGuide-ZookeeperRegistryInstallation
总结安装zookeeper的进程就是:
1/下载zookeeper,解压任意目录
2/将 conf/zoo_sample.cfg文件复制重命名 conf/zoo.cfg(内容不用改,由于默许的属性值都有)
3/启动zookeeper 命令: ./bin/zkServer.sh start
4/验证是不是安装成功
telnet 127.0.0.1 2181
dump


以上是zookeeper的安装进程
如果你不想看dubbo的helloworld详细步骤,你也能够直接把我写的两个demo下载下来直接运行,项目源码下载地址:https://pan.baidu.com/s/1bVkJ86 密码 appw

以下是项目目录截图和详细代码
这里写图片描述
先写服务端,新建maven项目,
HelloWorldService接口

public interface HelloWorldService { String sayHi(String content); }

实现类:

public class HelloWorldServiceImpl implements HelloWorldService { public String sayHi(String content) { return "hi "+content; } }

pom.xml配置

<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.5</version> <!--排除log4j必须加上--> <exclusions> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.4.9</version> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency>

spring.xml配置:

<!-- 当前利用信息配置 ip也能够是127.0.0.1--> <dubbo:application name="providerDemo" /> <dubbo:registry address="zookeeper://10.57.194.128:2181" /> <!-- 声明需要暴露的服务接口 --> <dubbo:service interface="com.evan.customer.HelloWorldService" ref="dubboApi"/> <!-- 本地对象实例 --> <bean id="dubboApi" class="com.evan.dubbo.impl.HelloWorldServiceImpl" />

PrivoderTest启动测试类:

public static void main(String[] args) throws IOException { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "spring.xml" }); System.in.read(); // 避免系统退出 }

客户端调用项目,新建customer的maven项目
1/新建HelloWorldService接口

public interface HelloWorldService { String sayHi(String content); }

2/pom.xml配置

<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.5</version> <exclusions> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.4.9</version> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency>

spring.xml配置:

<!-- 当前利用信息配置 --> <dubbo:application name="providerDemo" /> <dubbo:registry address="zookeeper://10.57.194.128:2181" /> <!-- 像本地实用1样注册对象--> <dubbo:reference id="hello" interface="com.evan.customer.HelloWorldService"/>

客户端测试代码

public static void main(String[] args) { ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml"); HelloWorldService hw = (HelloWorldService) ac.getBean("hello"); String result = hw.sayHi("dubbo"); System.out.println(result); }

调用成功输出截图:
这里写图片描述
需要注意:
1,zookeeper1定要正确安装,启动
2,先运行provider,再运行customer
3,helloworldservice包名要相同 (按理说应当将接口声明单独提出来,然后让客户端和服务端都依赖同1个jar包)

可能遇到的问题
1,如果provider的main方法运行两次,会报端口占用异常。
解决办法:查找占用端口进程对应的pid,然后kill
这里写图片描述
2,spring.xml关于dubbo的配置会出现:
cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element ‘dubbo:application’.
可以疏忽它,不影响运行。网上有人说可以找dubbo.xsd,我自己没试过,而且看了评论好像也不管用。

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生