• maven dubbo zookeeper 项目搭建(有效)jar包非war测试


    zookeeper安装以及dubbo-admin.war(管理端)配置启动,本章省略,参考其他内容

    这里主要说服务提供者和消费者

    项目结构:

    1)服务端

    DemoServer.java

    package com.mor.server.dubbo.service;

    public interface DemoServer {
         String sayHello(String str);
    }

    DemoServerImpl.java

    package com.mor.server.dubbo.service;

    public class DemoServerImpl implements DemoServer {

    public String sayHello(String str) {
    str = "Hello " + str ;
    System.err.println("server:" + str);
    return str;
    }

    }

    Main.java

    package com.mor.server.main;

    import java.io.IOException;
    import org.springframework.context.support.ClassPathXmlApplicationContext;

    public class Main {

    public static void main(String[] args) throws IOException {
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationProvider.xml" });
    context.start();
    System.out.println("按任意键退出");
    System.in.read();
    }

    }

    applicationProvider.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:application name="hello-world-app" />
    <!-- 测试 -->
    <dubbo:registry protocol="zookeeper" address="192.168.40.172:2181" />
    <dubbo:protocol name="dubbo" port="20880" />
    <dubbo:service interface="com.mor.server.dubbo.service.DemoServer"
    ref="demoService" /> <!-- 和本地bean一样实现服务 -->
    <bean id="demoService" class="com.mor.server.dubbo.service.DemoServerImpl" />
    </beans>

    log4j.properties

    log4j.appender.Stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.Stdout.layout.conversionPattern=%-5p - %-26.26c{1} - %m

    log4j.rootLogger=INFO,Stdout

    log4j.logger.org.apache.wicket=INFO
    log4j.logger.org.apache.wicket.protocol.http.HttpSessionStore=INFO
    log4j.logger.org.apache.wicket.version=INFO
    log4j.logger.org.apache.wicket.RequestCycle=INFO

    pom.xml

    <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>com.mor.maven</groupId>
    <artifactId>dubboserver</artifactId>
    <version>0.0.1</version>
    <packaging>jar</packaging>

    <name>dubboserver</name>
    <url>http://maven.apache.org</url>

    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spring.version>3.1.4.RELEASE</spring.version>
    <slf4j.version>1.6.6</slf4j.version>
    </properties>

    <dependencies>
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.1</version>
    <scope>test</scope>
    </dependency>
    <!-- Spring -->
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-asm</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-expression</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <!-- spring end -->
    <!-- log -->
    <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.16</version>
    </dependency>
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j.version}</version>
    </dependency>
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>${slf4j.version}</version>
    </dependency>
    <!-- dubbo -->
    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.5.3</version>
    </dependency>
    <!-- zkclient -->
    <dependency>
    <groupId>com.github.sgroschupf</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.1</version>
    </dependency>
    <!-- zookeeper -->
    <dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.3.6</version>
    </dependency>
    </dependencies>

    <build>
    <finalName>dubbo-demo</finalName>
    <plugins>
    <!-- 非多个资源配置 start-->
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.1</version>
    <configuration>
    <source>1.5</source>
    <target>1.5</target>
    <encoding>UTF-8</encoding>
    <failOnError>false</failOnError>
    </configuration>
    </plugin>
    <!-- 非多个资源配置 end-->
    </plugins>
    </build>
    </project>

    2)消费端

    ChatAction.java

    package com.mor.client.dubbo.action;

    import java.util.Date;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import com.mor.server.dubbo.service.DemoServer;


    public class ChatAction {

    public void SayHello(){
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationConsumer.xml" });
    context.start();
    DemoServer demoServer = (DemoServer) context.getBean("demoService");
    System.out.println("client:"+demoServer.sayHello("sun:"+new Date()));
    }

    }

    Main.java

    package com.mor.client.dubbo.main;

    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import com.mor.client.dubbo.action.ChatAction;
    import com.mor.server.dubbo.service.DemoServer;

    public class Main {

    public static void main(String[] args) throws InterruptedException {
    /* ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationConsumer.xml" });
    context.start();
    DemoServer demoServer = (DemoServer) context.getBean("demoService");
    demoServer.sayHello("sun");*/

    int i=0;
    while(i++<100){
    System.out.println("hello");
    ChatAction act = new ChatAction();
    act.SayHello();
    Thread.sleep(3000);
    }
    }

    }

    applicationConsumer.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:application name="consumer-of-helloworld-app" /> <!-- 使用multicast广播注册中心暴露发现服务地址 -->
    <dubbo:registry protocol="zookeeper" address="192.168.40.172:2181" /> <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
    <dubbo:reference id="demoService" interface="com.mor.server.dubbo.service.DemoServer" />
    </beans>

    log4j.properties

    log4j.appender.Stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.Stdout.layout.conversionPattern=%-5p - %-26.26c{1} - %m

    log4j.rootLogger=INFO,Stdout

    log4j.logger.org.apache.wicket=INFO
    log4j.logger.org.apache.wicket.protocol.http.HttpSessionStore=INFO
    log4j.logger.org.apache.wicket.version=INFO
    log4j.logger.org.apache.wicket.RequestCycle=INFO

    pom.xml

    <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>demo-dubbo</groupId>
    <artifactId>dubboclient</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>dubboclient</name>
    <url>http://maven.apache.org</url>

    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spring.version>3.1.4.RELEASE</spring.version>
    <slf4j.version>1.6.6</slf4j.version>
    </properties>

    <dependencies>
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.1</version>
    <scope>test</scope>
    </dependency>
    <!-- Spring -->
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-asm</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-expression</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <!-- spring end -->
    <!-- log -->
    <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.16</version>
    </dependency>
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j.version}</version>
    </dependency>
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>${slf4j.version}</version>
    </dependency>
    <!-- dubbo -->
    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.5.3</version>
    </dependency>
    <!-- zkclient -->
    <dependency>
    <groupId>com.github.sgroschupf</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.1</version>
    </dependency>
    <!-- zookeeper -->
    <dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.3.6</version>
    </dependency>
    </dependencies>

    <build>
    <finalName>dubbo-demo</finalName>
    <plugins>
    <!-- 非多个资源配置 start-->
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.1</version>
    <configuration>
    <source>1.5</source>
    <target>1.5</target>
    <encoding>UTF-8</encoding>
    <failOnError>false</failOnError>
    </configuration>
    </plugin>
    <!-- 非多个资源配置 end-->
    </plugins>
    </build>
    </project>

    注意:服务端与客户端之间的zookeeper用到的版本号一致,否则会出现连接上服务端但是操作不了远程接口的问题

     服务端启动成功:

    消费端启动:

     

    消费端调用远程接口完成之后,dubbo的管理端这边的消费者内容就会清空掉(所以在跑完消费端之后再看dubbo admin管理端这边的消费者为空时不要惊讶!)

  • 相关阅读:
    UVa 1331 最大面积最小的三角剖分
    UVa 1626 括号序列(矩阵连乘)
    POJ 3295 Tautology(构造法)
    POJ 2586 Y2K Accounting Bug(贪心)
    POJ 2109 Power of Cryptography
    abcd
    好数
    Gift
    密码游戏
    约瑟夫游戏
  • 原文地址:https://www.cnblogs.com/austinspark-jessylu/p/6956781.html
Copyright © 2020-2023  润新知