本文使用maven方式
1:pom文件
<dependencies> <!-- 引入spring的jar --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.0.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.0.2.RELEASE</version> </dependency> <!-- 引入zk --> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.3</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.5</version> </dependency> <!-- 引入dubbo --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.7</version> <scope>compile</scope> <exclusions> <exclusion> <artifactId>spring</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency> </dependencies>
2:服務端
//服務端的代碼 public class DubboServer { public static void main(String[] args) throws IOException { initServer(); } public static void initServer() throws IOException { //設置應用名稱 ApplicationConfig config = new ApplicationConfig(); config.setName("dubboAppServer"); //連接注冊中心 RegistryConfig registryConfig = new RegistryConfig(); registryConfig.setAddress("192.168.30.128:2181"); //本地虛擬機的地址 registryConfig.setProtocol("zookeeper"); //設置協議 ProtocolConfig protocolConfigRmi = new ProtocolConfig(); protocolConfigRmi.setPort(12880); protocolConfigRmi.setName("rmi"); //設置rmi的協議 ProtocolConfig protocolConfigDubbo = new ProtocolConfig(); protocolConfigDubbo.setPort(12881); protocolConfigDubbo.setName("dubbo"); //設置dubbo的協議 //服務提供者暴露服務 ServiceConfig<OrderService> serviceServiceConfig = new ServiceConfig<OrderService>(); serviceServiceConfig.setApplication(config); //設置應用名稱 serviceServiceConfig.setRegistry(registryConfig); //設置注冊中心 serviceServiceConfig. setProtocols(Arrays.asList(protocolConfigRmi,protocolConfigDubbo)); //設置兩個協議 serviceServiceConfig.setInterface(OrderService.class); //設置接口 serviceServiceConfig.setRef(new OrderServiceImpl()); //設置具體實現類 serviceServiceConfig.export(); //暴露和注冊服務 System.in.read(); }
3:消費端
//消費端代碼 public class DubboConsumer { public static void main(String[] args) { initConsumer(); } public static void initConsumer(){ //設置應用名稱 ApplicationConfig config = new ApplicationConfig(); config.setName("dubboAppConsumer"); //連接注冊中心 RegistryConfig registryConfig = new RegistryConfig(); registryConfig.setAddress("192.168.30.128:2181"); //本地虛擬機的地址 registryConfig.setProtocol("zookeeper"); ReferenceConfig<OrderService> referenceConfig = new ReferenceConfig<OrderService>(); referenceConfig.setApplication(config); referenceConfig.setRegistry(registryConfig); referenceConfig.setInterface(OrderService.class); referenceConfig.setProtocol("dubbo"); OrderService order = referenceConfig.get(); Integer num = order.buyShop(); //具體的調用 referenceConfig.destroy(); System.out.println(num); }