• 第二章、dubbo 框架(直连方式 dubbo)


    2.5 直连方式 dubbo
            点对点的直连项目 : 消费者直接访问服务提供者,没有注册中心。消费者必须指定服务提供者的访问地址( url )。
            消费者直接通过 url 地址访问固定的服务提供者。这个 url 地址是不变的。

    2.5.1 实现目标

    1) 创建服务提供者:

    A 、新建 空工程java project
    创建archety-webapp的model
    项目名称: 001-link-userservice-provider
    设置 version 1.0.0
    项目结构

     

    B maven pom.xml
    1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    3. <modelVersion>4.0.0modelVersion>
    4. <groupId>com.it.dubbogroupId>
    5. <artifactId>001-link-userservice-providerartifactId>
    6. <version>1.0.0version>
    7. <packaging>warpackaging>
    8. <dependencies>
    9. <dependency>
    10. <groupId>org.springframeworkgroupId>
    11. <artifactId>spring-contextartifactId>
    12. <version>4.3.16.RELEASEversion>
    13. dependency>
    14. <dependency>
    15. <groupId>org.springframeworkgroupId>
    16. <artifactId>spring-webmvcartifactId>
    17. <version>4.3.16.RELEASEversion>
    18. dependency>
    19. <dependency>
    20. <groupId>com.alibabagroupId>
    21. <artifactId>dubboartifactId>
    22. <version>2.6.2version>
    23. dependency>
    24. dependencies>
    25. <build>
    26. <plugins>
    27. <plugin>
    28. <artifactId>maven-compiler-pluginartifactId>
    29. <version>3.1version>
    30. <configuration>
    31. <source>1.8source>
    32. <target>1.8target>
    33. configuration>
    34. plugin>
    35. plugins>
    36. build>
    37. project>
    C 、 创建订单实体类:User
    1. package com.it.dubbo.entity;
    2. import java.io.Serializable;
    3. public class User implements Serializable {
    4. private Integer id;
    5. private String name;
    6. private Integer age;
    7. public Integer getId() {
    8. return id;
    9. }
    10. public void setId(Integer id) {
    11. this.id = id;
    12. }
    13. public String getName() {
    14. return name;
    15. }
    16. public void setName(String name) {
    17. this.name = name;
    18. }
    19. public Integer getAge() {
    20. return age;
    21. }
    22. public void setAge(Integer age) {
    23. this.age = age;
    24. }
    25. @Override
    26. public String toString() {
    27. return "User{" +
    28. "id=" + id +
    29. ", name='" + name + '\'' +
    30. ", age=" + age +
    31. '}';
    32. }
    33. }
    D 、新建订单服务接口: UserService
    1. package com.it.dubbo.service;
    2. import com.it.dubbo.entity.User;
    3. public interface UserService {
    4. //根据用户标识获取用户信息
    5. User queryUserById(Integer id);
    6. }
    E 、 新建接口的实现类: UserServiceImpl
    1. package com.it.dubbo.service.impl;
    2. import com.it.dubbo.entity.User;
    3. import com.it.dubbo.service.UserService;
    4. public class UserServiceImpl implements UserService {
    5. @Override
    6. public User queryUserById(Integer id) {
    7. User user=new User();
    8. user.setId(id);
    9. user.setName("小明");
    10. user.setAge(19);
    11. return user;
    12. }
    13. }
    F 、 创建 dubbo 配置文件
    dubbo-userservice-provider.xml
    1. <beans xmlns="http://www.springframework.org/schema/beans"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
    3. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
    4. <dubbo:application name="001-link-userservice-provider"/>
    5. <dubbo:protocol name="dubbo" port="20880"/>
    6. <dubbo:service interface="com.it.dubbo.service.UserService" ref="userService" registry="N/A"/>
    7. <bean id="userService" class="com.it.dubbo.service.impl.UserServiceImpl"/>
    8. beans>
    F 、 创建 web.xml文件
    1. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    4. version="4.0">
    5. <context-param>
    6. <param-name>contextConfigLocationparam-name>
    7. <param-value>classpath:dubbo-userservice-provider.xmlparam-value>
    8. context-param>
    9. <listener>
    10. <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
    11. listener>
    12. web-app>

    G 、安装本地 jar maven 仓库
    服务接口中的方法要给消费者使用,消费者项目需要知道接口名称和接口中的方法名称、参
    数等。这些信息服务提供者才知道。需要把接口的 class 文件打包为 jar .
    服务接口项目的类文件打包为 jar , 安装到 maven 仓库,仓库中的提供者 jar 可以被消费者
    使用。
    使用 idea maven 窗口执行 install
    本机打包到maven仓库的地址
    D:\jsp\Maven\MavenTest\repository\com\it\dubbo\001-link-userservice-provider

    2) 创建服务消费者

    A、新建archet-webapp的model

    002-link-consumer

     Bmaven pom.xml

    1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    3. <modelVersion>4.0.0modelVersion>
    4. <groupId>com.it.dubbogroupId>
    5. <artifactId>002-link-comsumerartifactId>
    6. <version>1.0.0version>
    7. <packaging>warpackaging>
    8. <dependencies>
    9. <dependency>
    10. <groupId>org.springframeworkgroupId>
    11. <artifactId>spring-contextartifactId>
    12. <version>4.3.16.RELEASEversion>
    13. dependency>
    14. <dependency>
    15. <groupId>org.springframeworkgroupId>
    16. <artifactId>spring-webmvcartifactId>
    17. <version>4.3.16.RELEASEversion>
    18. dependency>
    19. <dependency>
    20. <groupId>com.alibabagroupId>
    21. <artifactId>dubboartifactId>
    22. <version>2.6.2version>
    23. dependency>
    24. <dependency>
    25. <groupId>com.it.dubbogroupId>
    26. <artifactId>001-link-userservice-providerartifactId>
    27. <version>1.0.0version>
    28. dependency>
    29. dependencies>
    30. <build>
    31. <plugins>
    32. <plugin>
    33. <artifactId>maven-compiler-pluginartifactId>
    34. <version>3.1version>
    35. <configuration>
    36. <source>1.8source>
    37. <target>1.8target>
    38. configuration>
    39. plugin>
    40. plugins>
    41. build>
    42. project>
    C 、 创建控制层UserController
    1. package com.it.dubbo.web;
    2. import com.it.dubbo.entity.User;
    3. import com.it.dubbo.service.UserService;
    4. import org.springframework.beans.factory.annotation.Autowired;
    5. import org.springframework.stereotype.Controller;
    6. import org.springframework.ui.Model;
    7. import org.springframework.web.bind.annotation.RequestMapping;
    8. @Controller
    9. public class UserController {
    10. @Autowired
    11. private UserService userService;
    12. @RequestMapping(value = "/user")
    13. public String userDetail(Model model,Integer id){
    14. User user = userService.queryUserById(id);
    15. model.addAttribute("user",user);
    16. return "userDetail";
    17. }
    18. }
    D 、 创建 dubbo 配置文件
    link-consumer.xml
    1. <beans xmlns="http://www.springframework.org/schema/beans"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
    3. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
    4. <dubbo:application name="002-link-consumer"/>
    5. <dubbo:reference id="userService" interface="com.it.dubbo.service.UserService"
    6. url="dubbo://localhost:20880" registry="N/A"/>
    7. beans>
    application.xml
    1. <beans xmlns="http://www.springframework.org/schema/beans"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xmlns:context="http://www.springframework.org/schema/context"
    4. xmlns:mvc="http://www.springframework.org/schema/mvc"
    5. xsi:schemaLocation="http://www.springframework.org/schema/beans
    6. http://www.springframework.org/schema/beans/spring-beans.xsd
    7. http://www.springframework.org/schema/context
    8. http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    9. <context:component-scan base-package="com.it.dubbo.web"/>
    10. <mvc:annotation-driven/>
    11. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    12. <property name="prefix" value="/"/>
    13. <property name="suffix" value=".jsp"/>
    14. bean>
    15. beans>

    E、 创建web.xml文件

    1. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    4. version="4.0">
    5. <servlet>
    6. <servlet-name>dispatcherServletservlet-name>
    7. <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
    8. <init-param>
    9. <param-name>contextConfigLocationparam-name>
    10. <param-value>classpath:application.xml,classpath:link-consumer.xmlparam-value>
    11. init-param>
    12. servlet>
    13. <servlet-mapping>
    14. <servlet-name>dispatcherServletservlet-name>
    15. <url-pattern>/url-pattern>
    16. servlet-mapping>
    17. web-app>

    F、 创建jsp页面

    1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    2. <html>
    3. <head>
    4. <title>用户详情title>
    5. head>
    6. <body>
    7. body>
    8. <h1>用户详情h1>
    9. <div>用户标识:${user.id}div>
    10. <div>用户名称:${user.name}div>
    11. <div>用户年龄:${user.age}div>
    12. html>

    给两个model配置两个tomcat,端口号不能相同

     

     

     

     运行结果

     

  • 相关阅读:
    深度学习-消融实验
    前端面试题集锦(2)
    基于SSM的车辆维修管理系统
    [附源码]JAVA毕业设计课程网站设计(系统+LW)
    【黑马程序员】Python文件、异常、模块、包
    请小心ETCD的Compact
    Apipost - 自动化测试
    JAVA如何保留小数点后两位
    ApplicationListener和@EventListener
    电饭锅的用例图UML
  • 原文地址:https://blog.csdn.net/weixin_59334478/article/details/126266948