1. Provider暴露服務
provider.xml配置:java
<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" xdi: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:application name="aaron-user-app" /> <!— 使用zookeeper暴露服務地址 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" client="zkclient"/> <!-- 用dubbo協議在20880端口暴露服務 --> <dubbo:protocol name="dubbo" port="20880" /> <dubbo:service interface="aaron.dubbo.provider.UserService" ref="userService"/> <bean id="userService" class="aaron.dubbo.provider.UserServiceImpl"/> </beans>
因爲dubbo的服務器已經停服,因此dubbo.xsd須要引用本地,在setting—>Languages & FrameWorks —> Schemas and DTDS中,引用dubbo.jar中的dubbo.xsd便可。
定義接口:spring
public interface UserService { String getName(Long id); }
接口實現:服務器
public class UserServiceImpl implements UserService { @Override public String getName(Long id) { return "hello world!"; } }
啓動服務:app
public class Provider { public static void main(String[] args) throws IOException { System.out.println("Provider"); ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("provider.xml"); context.start(); System.in.read(); } }
2. Consumer引用服務
consumer.xml配置:ide
<?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:application name="consumer-of-aaron-user-app" /> <!— 使用zookeeper暴露發現服務地址 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" client="zkclient"/> <!-- 生成遠程服務代理,能夠和本地bean同樣使用demoService --> <dubbo:reference id="userService" interface="aaron.dubbo.provider.UserService" /> </beans>
一樣這樣也須要引用dubbo.jar中的dubbo.xsd。代理
定義接口:code
public interface UserService { String getName(Long id); }
調用服務:xml
public class Consumer { public static void main(String[] args) { System.out.println("Consumer"); ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("consumer.xml"); context.start(); UserService userService = (UserService) context.getBean("userService"); String name = userService.getName(1L); System.out.println(name); } }