文档章节

Dubbox入门示例(注册服务器使用zookeeper)【转】

 卡价格及
发布于 2016/10/16 16:33
字数 3521
阅读 17
收藏 0

准备工作:

1,安装好 zookeeper (可参考前一篇文章)

2,安装好maven

3,安装git(也可以不安装,直接下载源码)

下面进入正式步骤

1,在 git 命令行下,下载项目源码  

git clone https://github.com/dangdangdotcom/dubbox

 

2,对下载下来的源码进行编译

mvn install -Dmaven.test.skip=true

 

3,下载下来的有一个文件夹  dubbo-demo ,这里包含了官方demo,可以参考。

    官方demo里包含了3个文件夹 dubbo-demo-api(服务接口及传输对象)、dubbo-demo-provider(服务生产者)、dubbo-demo-consumer(服务消费方)

4,下载下来的有一个文件夹 dubbo-admin,这个是dubbo的后台管理,其配置文件在webapp\WEB-INF\底下,名为 dubbo.properties

dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest

 

    将 dubbo-admin 打成war包,放在tomcat底下,即可以在浏览器进入dubo的后台

,进行管理。

    注意:zookeeper启动之后会占用8080端口。

    Dubbox入门示例(注册服务器使用zookeeper)【转】 - zookeeperkafka - zookeeperkafka的博客

5,dubbo-monitor项目用于性能监控

6,模拟官方demo,编写小demo

    6.1,新建api项目

    Dubbox入门示例(注册服务器使用zookeeper)【转】 - zookeeperkafka - zookeeperkafka的博客

    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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>org.viking</groupId>
	<artifactId>dubbo-hello-api</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>dubbo-hello-api</name>
	<dependencies>
		<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.8.4</version>
        </dependency>
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.0.0.GA</version>
        </dependency>
        <dependency>
            <groupId>javax.annotation</groupId>
            <artifactId>javax.annotation-api</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.12</version>
        </dependency>
	</dependencies>
	<build>
		<finalName>dubbo-hello-api</finalName>
	</build>
</project>

 

    SerializationOptimizerImpl.java

/**
 * Copyright 1999-2014 dangdang.com.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package viking.dubbo.demo.api;

import com.alibaba.dubbo.common.serialize.support.SerializationOptimizer;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;

/**
 * This class must be accessible from both the provider and consumer
 *
 * @author lishen
 */
public class SerializationOptimizerImpl implements SerializationOptimizer {

    public Collection<Class> getSerializableClasses() {
        List<Class> classes = new LinkedList<Class>();
        classes.add(User.class);
        return classes;
    }
}

 

    User.java

package viking.dubbo.demo.api;
import org.codehaus.jackson.annotate.JsonProperty;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
 
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class User implements Serializable {
 
    @NotNull
    @Min(1L)
    private Long id;
 
    @JsonProperty("username")
    @XmlElement(name = "username")
    @NotNull
    @Size(min = 6, max = 50)
    private String name;
 
    public User() {
    }
 
    public User(Long id, String name) {
        this.id = id;
        this.name = name;
    }
 
    public Long getId() {
        return id;
    }
 
    public void setId(Long id) {
        this.id = id;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    @Override
    public String toString() {
        return "User (" +
                "id=" + id +
                ", name='" + name + '\'' +
                ')';
    }
}

 

    UserRestService.java

package viking.dubbo.demo.api;

import javax.validation.constraints.Min;

public interface UserRestService {
	User getUser(@Min(value = 1L, message = "User ID must be greater than 1") Long id);
}

 

    UserService.java

package viking.dubbo.demo.api;

public interface UserService {
	User getUser(Long id);
}

 

    

    6.2,新建provider

Dubbox入门示例(注册服务器使用zookeeper)【转】 - zookeeperkafka - zookeeperkafka的博客

    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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>org.viking</groupId>
	<artifactId>dubbo-hello-provider</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>dubbo-hello-provider</name>
	<dependencies>
		<!--公用的服务接口 -->
		<dependency>
			<groupId>org.viking</groupId>
			<artifactId>dubbo-hello-api</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>dubbo</artifactId>
			<version>2.8.4</version>
		</dependency>

		<dependency>
			<groupId>org.javassist</groupId>
			<artifactId>javassist</artifactId>
			<version>3.15.0-GA</version>
		</dependency>

		<dependency>
			<groupId>org.apache.mina</groupId>
			<artifactId>mina-core</artifactId>
			<version>1.1.7</version>
		</dependency>

		<dependency>
			<groupId>org.glassfish.grizzly</groupId>
			<artifactId>grizzly-core</artifactId>
			<version>2.1.4</version>
		</dependency>

		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpclient</artifactId>
			<version>4.2.1</version>
		</dependency>

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.1.39</version>
		</dependency>

		<dependency>
			<groupId>com.thoughtworks.xstream</groupId>
			<artifactId>xstream</artifactId>
			<version>1.4.1</version>
		</dependency>

		<dependency>
			<groupId>org.apache.bsf</groupId>
			<artifactId>bsf-api</artifactId>
			<version>3.1</version>
		</dependency>

		<dependency>
			<groupId>org.apache.zookeeper</groupId>
			<artifactId>zookeeper</artifactId>
			<version>3.4.6</version>
		</dependency>

		<dependency>
			<groupId>com.github.sgroschupf</groupId>
			<artifactId>zkclient</artifactId>
			<version>0.1</version>
		</dependency>

		<dependency>
			<groupId>org.apache.curator</groupId>
			<artifactId>curator-framework</artifactId>
			<version>2.5.0</version>
		</dependency>

		<dependency>
			<groupId>com.googlecode.xmemcached</groupId>
			<artifactId>xmemcached</artifactId>
			<version>1.3.6</version>
		</dependency>

		<dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-rt-frontend-simple</artifactId>
			<version>2.6.1</version>
		</dependency>

		<dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-rt-transports-http</artifactId>
			<version>2.6.1</version>
		</dependency>

		<dependency>
			<groupId>org.apache.thrift</groupId>
			<artifactId>libthrift</artifactId>
			<version>0.8.0</version>
		</dependency>

		<dependency>
			<groupId>com.caucho</groupId>
			<artifactId>hessian</artifactId>
			<version>4.0.7</version>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
		</dependency>

		<dependency>
			<groupId>org.mortbay.jetty</groupId>
			<artifactId>jetty</artifactId>
			<version>6.1.26</version>
			<exclusions>
				<exclusion>
					<groupId>org.mortbay.jetty</groupId>
					<artifactId>servlet-api</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.16</version>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.6.2</version>
		</dependency>

		<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
			<version>2.1.0</version>
		</dependency>

		<dependency>
			<groupId>javax.validation</groupId>
			<artifactId>validation-api</artifactId>
			<version>1.0.0.GA</version>
		</dependency>

		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-validator</artifactId>
			<version>4.2.0.Final</version>
		</dependency>

		<dependency>
			<groupId>javax.cache</groupId>
			<artifactId>cache-api</artifactId>
			<version>0.4</version>
		</dependency>

		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-jaxrs</artifactId>
			<version>3.0.7.Final</version>
		</dependency>

		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-client</artifactId>
			<version>3.0.7.Final</version>
		</dependency>

		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-netty</artifactId>
			<version>3.0.7.Final</version>
		</dependency>

		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-jdk-http</artifactId>
			<version>3.0.7.Final</version>
		</dependency>

		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-jackson-provider</artifactId>
			<version>3.0.7.Final</version>
		</dependency>

		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-jaxb-provider</artifactId>
			<version>3.0.7.Final</version>
		</dependency>

		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-core</artifactId>
			<version>8.0.11</version>
		</dependency>

		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-logging-juli</artifactId>
			<version>8.0.11</version>
		</dependency>

		<dependency>
			<groupId>com.esotericsoftware.kryo</groupId>
			<artifactId>kryo</artifactId>
			<version>2.24.0</version>
		</dependency>

		<dependency>
			<groupId>de.javakaffee</groupId>
			<artifactId>kryo-serializers</artifactId>
			<version>0.26</version>
		</dependency>

		<dependency>
			<groupId>de.ruedigermoeller</groupId>
			<artifactId>fst</artifactId>
			<version>1.55</version>
		</dependency>
	</dependencies>
	<build>
		<finalName>dubbo-hello-provider</finalName>
	</build>
</project>

 

    DemoProvider.java

package viking.dubbo.demo.provider;

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

public class DemoProvider {
	public static void main(String[] args) throws IOException {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath*:META-INF/spring/*.xml");
        context.start();
        System.out.println("服务已经启动...");
        System.in.read();
    }
}

 

    UserRestServiceImpl.java

package viking.dubbo.demo.provider;

import com.alibaba.dubbo.rpc.RpcContext;
import com.alibaba.dubbo.rpc.protocol.rest.support.ContentType;
import viking.dubbo.demo.api.User;
import viking.dubbo.demo.api.UserRestService;
import viking.dubbo.demo.api.UserService;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
 
@Path("users")
@Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_XML})
@Produces({ContentType.APPLICATION_JSON_UTF_8, ContentType.TEXT_XML_UTF_8})
public class UserRestServiceImpl implements UserRestService {
 
    private UserService userService;
 
    public void setUserService(UserService userService) {
        this.userService = userService;
    }
 
    @GET
    @Path("{id : \\d+}")
    public User getUser(@PathParam("id") Long id) {
        if (RpcContext.getContext().getRequest(HttpServletRequest.class) != null) {
            System.out.println("Client IP address from RpcContext: " + RpcContext.getContext().getRequest(HttpServletRequest.class).getRemoteAddr());
        }
        if (RpcContext.getContext().getResponse(HttpServletResponse.class) != null) {
            System.out.println("Response object from RpcContext: " + RpcContext.getContext().getResponse(HttpServletResponse.class));
        }
        return userService.getUser(id);
    }
}

 

    UserServiceImpl.java

package viking.dubbo.demo.provider;

import viking.dubbo.demo.api.User;
import viking.dubbo.demo.api.UserService;

public class UserServiceImpl implements UserService {
	public User getUser(Long id) {
		return new User(id, "username" + id);
	}
}

 

    dubbo-demo-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-2.5.xsd
    http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <dubbo:application name="demo-provider" owner="programmer" organization="dubbox"/>

    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>

    <dubbo:protocol name="dubbo" serialization="kryo" optimizer="viking.dubbo.demo.api.SerializationOptimizerImpl"/>

    <!-- use tomcat server -->
    <dubbo:protocol name="rest" port="8888" threads="500" contextpath="services" server="tomcat" accepts="500"
                    extension="com.alibaba.dubbo.rpc.protocol.rest.support.LoggingFilter"/>


    <dubbo:service interface="viking.dubbo.demo.api.UserService" ref="userService" protocol="dubbo" />

    <dubbo:service interface="viking.dubbo.demo.api.UserRestService" ref="userRestService" protocol="rest"  validation="true"/>

    <bean id="userService" class="viking.dubbo.demo.provider.UserServiceImpl"/>

    <bean id="userRestService" class="viking.dubbo.demo.provider.UserRestServiceImpl">
        <property name="userService" ref="userService"/>
    </bean>

</beans>

    6.3,新建 consumer

    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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>org.viking</groupId>
	<artifactId>dubbo-hello-consumer</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>dubbo-hello-consumer</name>
	<dependencies>
		<!--公用的服务接口 -->
		<dependency>
			<groupId>org.viking</groupId>
			<artifactId>dubbo-hello-api</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>


		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>dubbo</artifactId>
			<version>2.8.4</version>
		</dependency>

		<dependency>
			<groupId>org.javassist</groupId>
			<artifactId>javassist</artifactId>
			<version>3.15.0-GA</version>
		</dependency>

		<dependency>
			<groupId>org.apache.mina</groupId>
			<artifactId>mina-core</artifactId>
			<version>1.1.7</version>
		</dependency>

		<dependency>
			<groupId>org.glassfish.grizzly</groupId>
			<artifactId>grizzly-core</artifactId>
			<version>2.1.4</version>
		</dependency>

		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpclient</artifactId>
			<version>4.2.1</version>
		</dependency>

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.1.39</version>
		</dependency>

		<dependency>
			<groupId>com.thoughtworks.xstream</groupId>
			<artifactId>xstream</artifactId>
			<version>1.4.1</version>
		</dependency>

		<dependency>
			<groupId>org.apache.bsf</groupId>
			<artifactId>bsf-api</artifactId>
			<version>3.1</version>
		</dependency>

		<dependency>
			<groupId>org.apache.zookeeper</groupId>
			<artifactId>zookeeper</artifactId>
			<version>3.4.6</version>
		</dependency>

		<dependency>
			<groupId>com.github.sgroschupf</groupId>
			<artifactId>zkclient</artifactId>
			<version>0.1</version>
		</dependency>

		<dependency>
			<groupId>org.apache.curator</groupId>
			<artifactId>curator-framework</artifactId>
			<version>2.5.0</version>
		</dependency>

		<dependency>
			<groupId>com.googlecode.xmemcached</groupId>
			<artifactId>xmemcached</artifactId>
			<version>1.3.6</version>
		</dependency>

		<dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-rt-frontend-simple</artifactId>
			<version>2.6.1</version>
		</dependency>

		<dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-rt-transports-http</artifactId>
			<version>2.6.1</version>
		</dependency>

		<dependency>
			<groupId>org.apache.thrift</groupId>
			<artifactId>libthrift</artifactId>
			<version>0.8.0</version>
		</dependency>

		<dependency>
			<groupId>com.caucho</groupId>
			<artifactId>hessian</artifactId>
			<version>4.0.7</version>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
		</dependency>

		<dependency>
			<groupId>org.mortbay.jetty</groupId>
			<artifactId>jetty</artifactId>
			<version>6.1.26</version>
			<exclusions>
				<exclusion>
					<groupId>org.mortbay.jetty</groupId>
					<artifactId>servlet-api</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.16</version>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.6.2</version>
		</dependency>

		<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
			<version>2.1.0</version>
		</dependency>

		<dependency>
			<groupId>javax.validation</groupId>
			<artifactId>validation-api</artifactId>
			<version>1.0.0.GA</version>
		</dependency>

		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-validator</artifactId>
			<version>4.2.0.Final</version>
		</dependency>

		<dependency>
			<groupId>javax.cache</groupId>
			<artifactId>cache-api</artifactId>
			<version>0.4</version>
		</dependency>

		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-jaxrs</artifactId>
			<version>3.0.7.Final</version>
		</dependency>

		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-client</artifactId>
			<version>3.0.7.Final</version>
		</dependency>

		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-netty</artifactId>
			<version>3.0.7.Final</version>
		</dependency>

		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-jdk-http</artifactId>
			<version>3.0.7.Final</version>
		</dependency>

		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-jackson-provider</artifactId>
			<version>3.0.7.Final</version>
		</dependency>

		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-jaxb-provider</artifactId>
			<version>3.0.7.Final</version>
		</dependency>

		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-core</artifactId>
			<version>8.0.11</version>
		</dependency>

		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-logging-juli</artifactId>
			<version>8.0.11</version>
		</dependency>

		<dependency>
			<groupId>com.esotericsoftware.kryo</groupId>
			<artifactId>kryo</artifactId>
			<version>2.24.0</version>
		</dependency>

		<dependency>
			<groupId>de.javakaffee</groupId>
			<artifactId>kryo-serializers</artifactId>
			<version>0.26</version>
		</dependency>

		<dependency>
			<groupId>de.ruedigermoeller</groupId>
			<artifactId>fst</artifactId>
			<version>1.55</version>
		</dependency>
	</dependencies>
	<build>
		<finalName>dubbo-hello-consumer</finalName>
	</build>
</project>

 

DemoConsumer.java

package viking.dubbo.demo.consumer;

import org.springframework.context.support.ClassPathXmlApplicationContext;
import viking.dubbo.demo.api.UserService;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Response;
 
public class DemoConsumer {
 
    public static void main(String[] args) {
        final String port = "8888";
 
        //测试Rest服务
        getUser("http://localhost:" + port + "/services/users/1.json");
        getUser("http://localhost:" + port + "/services/users/1.xml");
 
        //测试常规服务
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath*:META-INF/spring/*.xml");
        context.start();
        UserService userService = context.getBean(UserService.class);
        System.out.println(userService.getUser(1L));
    }
 
 
    private static void getUser(String url) {
        System.out.println("Getting user via " + url);
        Client client = ClientBuilder.newClient();
        WebTarget target = client.target(url);
        Response response = target.request().get();
        try {
            if (response.getStatus() != 200) {
                throw new RuntimeException("Failed with HTTP error code : " + response.getStatus());
            }
            System.out.println("Successfully got result: " + response.readEntity(String.class));
        } finally {
            response.close();
            client.close();
        }
    }
}

 

    dubbo-hello-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-2.5.xsd
    http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <dubbo:application name="demo-consumer" owner="programmer" organization="dubbox"/>

    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>

    <dubbo:reference id="userRestService" interface="viking.dubbo.demo.api.UserRestService"/>

    <dubbo:reference id="userService" interface="viking.dubbo.demo.api.UserService"/>

</beans>

 

 

7,运行查看结果

    首先运行 provider,然后运行 consumer,同时也可以在dubbo的后台管理查看结果

Getting user via http://localhost:8888/services/users/1.json
log4j:WARN No appenders could be found for logger (org.jboss.resteasy.plugins.providers.DocumentProvider).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Successfully got result: {"id":1,"username":"username1"}
Getting user via http://localhost:8888/services/users/1.xml
Successfully got result: <?xml version="1.0" encoding="UTF-8" standalone="yes"?><user><id>1</id><username>username1</username></user>
User (id=1, name='username1')

 

Dubbox入门示例(注册服务器使用zookeeper)【转】 - zookeeperkafka - zookeeperkafka的博客

 

1. 使用阿里巴巴Druid连接池(高效、功能强大、可扩展性好的数据库连接池、监控数据库访问性能、支持Common-Logging、Log4j和JdkLog,监控数据库访问)
2. 提供高并发JMS消息处理机制
3. 所有功能模块化、所有模块服务化、所有服务原子化的方式,提供可拓展的服务模型,使程序稳定运行,永不宕机
4. 提供Wink Rest、Webservice服务,故可作为独立服务平台部署

框架整合:

Springmvc + Mybatis + Shiro(权限) + REST(服务) + WebService(服务) + JMS(消息) + Lucene(搜搜引擎) + Quartz(定时调度) + Bootstrap Html5(支持PC、IOS、Android)

框架简介:

 

项目Maven构建,真实大型互联网架构,做到高并发,大数据处理,整个项目使用定制化服务思想,提供模块化、服务化、原子化的方案,将功能模块进行拆分,可以公用到所有的项目中。架构采用分布式部署架构,所有模块进行拆分,使项目做到绝对解耦,稳定压倒一切~~

 

持续集成:

1. 我的待办工作流服务(提供Webservice服务)

2. 我的待办工作流集成JMS消息服务(支持高并发,可支持成千上万系统集成)

3. 我的任务提供Rest服务,完成日常的工作管理,通过定时调度平台,动态生成我的任务、循环周期任务、定时邮催提醒完成任务等

4. 文件上传、多线程下载服务化、发送邮件、短信服务化、部门信息服务化、产品信息服务化、信息发布服务化、我的订阅服务化、我的任务服务化、公共链接、我的收藏服务化等

系统模块:

 1.  用户管理:

      用户信息管理(添加、删除、修改、用户授权、用户栏目管理、查询等)

      用户组管理(添加、删除、修改、用户组栏目授权,栏目授权、查询、用户组人员添加查询等)

      用户角色管理(添加、删除、修改、用户角色授权、用户角色栏目信息查询设置等)
 2.  文章管理:

      栏目管理:查询无限极栏目树、创建无限极栏目树分类(导航栏目、图片列表栏目、文章列表栏目、文章内容栏目等)、删除、修改栏目信息。

      文章管理:创建、删除、修改文章,多维度文章查询,包括已发布、未发布、所有文章等。文章富文本编辑器、文章多文件上传、文章状态控制等。
3.  系统设置:

       数据字典管理:支持中、英文信息,支持无限级别分类配置,动态控制是否可用等。

       部门信息管理:支持中、英文无限级别部门信息增加,删除,修改操作,部门列表、树心查询等。

       日志管理:系统日志列表查询、在线查看、在线下载等

       路线管理:集成百度地图API,提供线路查询管理功能

       Druid Monitor(监控):集成阿里巴巴连接池,提供在线连接池监控程序,包括:数据源、SQL监控、URL监控、Session监控、Spring监控等

       网站信息管理:通过系统配置文件进行网站内容操作,包括邮件服务器配置、公司基本信息配置等。

 4.  集成REST服务,可以用作独立服务平台(提供大量实例及测试平台,包括:文件上传下载、邮件短信发送、部门、产品、公共连接、我的收藏、我的任务、信息发布等)

 5.  集成Quartz调度,可以用作定时调度平台(动态配置调度类、调度时间,使程序自动执行某些业务)

 6.  Lucene搜索引擎,可以将文件资料索引化,支持文件内容搜索、关键字搜索、高亮关键字等,使信息在毫秒内提取查询出来

 7.  用户设置功能:包括修改用户信息,修改密码、发送消息,修改个人图片,查看角色、查看用户组,管理员修改角色、用户、用户组等。

 8.  集成Webservice平台,包括jaxws服务、CXF框架,配置双加密的权限认证。使服务集成更加安全。

 9.  Bootstrap html5提供了两套前台开环境,包括CMS和电子商务网站,使您的开发更加的简洁。

技术点:

1.  Springmvc + Mybatis集成、SpringSecurity权限控制、Spring AOP事务处理。

2.   Wink Rest服务、Webservice服务:jaxws、CXF等

3.  IO 流上传下载文件,多线程操作

4.  发送邮件,配置邮件服务器,发基于html、纯文本格式的邮件

5.  MD5加密 (登陆密码校验加密等),用户统一Session、Cookie管理,统一验证码校验等。

6.  数据库连接池统一配置 

7.  Quartz定时调度任务集成(直接通过配置即可)

8.  Httpclient破解验证码,登陆联通充值平台

9.  汉字、英文拆分、可以用作文档关键字搜索等。

10.  Base64图片处理,支持PC,Android,IOS

11.  Service Socket 、Client Socket 通信技术(已经做过GPRS数据获取,并用到了项目中)

12.  提供大量工具类,可以直接使用

13.  Maven项目构建,您可以直接做架构,可以提升自己的学习能力,使您成为真正的架构师。

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客
 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客
 

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客
 

 Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客
 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客
 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客
 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客
 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

 

Springmvc+mybatis+shiro框架整合 高并发 大数据 bootstrap ehcache 企业级应用 - zookeeperkafka - zookeeperkafka的博客

© 著作权归作者所有

粉丝 10
博文 44
码字总数 90044
作品 0
深圳
私信 提问
加载中

评论(1)

卡价格及 博主
一个案例快速入门Dubbox开发

一个案例快速入门Dubbox开发 在之前的 Dubbox的入门配置 一文中我们了解如何部署注册中心。那么接下来我们就该实战快速入门框架开发。其实,我们这里实现的maven多模块项目无非就是讲各个都拆...

TyCoding
2018/09/01
63
0
Dubbo进阶(十一)—— Dubbo与DubboX区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sunhuaqiang1/article/details/83097067 Dubbo进阶(十一)—— Dubbo与DubboX区别 前世今生 Dubbo源于阿里的...

孙华强
2018/10/16
0
0
Dubbo详细介绍与安装使用过程

1 Dubbo介绍 1.1 dubbox简介 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进...

monroeCode
2017/10/23
19
0
ZooKeeper源码解析(一)-入门操作

Zookeeper 分布式服务框架是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。...

守望者之父
2017/06/18
12
0
高性能 RPC 框架 Dubbo 从入门到深入-服务注册中心搭建(详细)

一、前言 整体来说,一个公司业务系统的演进流程基本都是从单体应用到多应用。在单体应用时,不同业务模块相互调用直接在本地 JVM 进程内就可以完成,而变为多个应用时,相互之间进行通信的方...

加多
2018/01/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Vue学习01

我的github地址https://github.com/zhangl-w/VueDemo/tree/master/VueDemo 一、基本代码 1.导入Vue包,导包后浏览器内存中会产生一个Vue的构造函数 2.创建一个Vue实例 3.el 表示,当前我们n...

zhang_l
32分钟前
5
0
centos7.x 安装harbor 1.9.3

首先必须安装docker和docker-compose 推荐使用pip安装docker-compose,因为pip可以为你自动对应版本问题 1.docker安装 curl -sfL https://get.docker.io | sh -systemctl start docker 2.d...

Elson
33分钟前
5
0
每天积累一点:射频阻抗

对我来说,阻抗是一个非常令人困惑的概念(术语)。以下是我第一次学习阻抗概念时脑海中出现的许多问题。同样的问题也让你烦恼吗? 当我第一次在高中物理中学习“电阻(Resistance )”时,它...

demyar
34分钟前
5
0
人生苦短?试试Groovy进行单元测试

如果您今天正在编程,那么您很可能听说过单元测试或测试驱动的开发过程。我还没有遇到一个既没有听说过又没有听说过单元测试并不重要的程序员。在随意的讨论中,大多数程序员似乎认为单元测试...

八音弦
35分钟前
4
0
GMAT词汇怎么背?简单记忆法让你不再害怕背单词

GMAT考试对于词汇的掌握和使用要求高,可以说是GMAT考试的难关之一。面对学术化专业化难度颇高的词汇,考生难免会产生畏惧退缩的情绪。GMAT难词怎么背?有没有轻松背单词的方法呢?下面小编就为...

bole6
37分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部