RPC的實現的三種方式

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

package com.bjsxt.service;
import java.rmi.Remote;
import java.rmi.RemoteException;
/***
* 建立須要發佈的服務對應的業務接口
* @author Administrator
* Remote 接口用於標識其方法能夠從非本地虛擬機上調用的接口。
*/
public interface UserService extends Remote{
public String helloRmi(String name) throws RemoteException; }
3.3 建立 UserServiceImpl 實現類
package com.bjsxt.service.impl;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import com.bjsxt.service.UserService;
/***
* 建立發佈的服務對應的實現類
* @author Administrator
*
*/
public class UserServiceImpl
extends UnicastRemoteObject implements UserService {
public UserServiceImpl() throws RemoteException {
super();
// TODO Auto-generated constructor stub
}
@Override
public String helloRmi(String name) throws RemoteException {
// TODO Auto-generated method stub
return "hello "+name; } }
View Code

 

3.4 發佈遠程服務
package com.bjsxt.app;
import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;
import com.bjsxt.service.UserService;
import com.bjsxt.service.impl.UserServiceImpl;
public class ProviderApp {
public static void main(String[] args) {
try{
/****
* 完成遠程服務的發佈
*/
//將遠程服務發佈在本地的 8888 端口
LocateRegistry.createRegistry(8888);
//發佈的遠程服務的訪問 url
String name="rmi://localhost:8888/rmi";
//建立一個提供具體服務的遠程對象
UserService userService = new UserServiceImpl();
//給提供遠程服務的對象綁定一個 url
Naming.bind(name, userService);
System.out.println("=============發佈 rmi 遠程服務============");
}catch(Exception ex){
ex.printStackTrace();
} } }
View Code

 

 

 

package com.bjsxt.service;
import java.rmi.Remote;
import java.rmi.RemoteException;
/***
* 建立須要發佈的服務對應的業務接口
* @author Administrator
* Remote 接口用於標識其方法能夠從非本地虛擬機上調用的接口。
*/
public interface UserService extends Remote{
public String helloRmi(String name) throws RemoteException;
}
4.3 消費遠程服務
package com.bjsxt.app;
import java.rmi.Naming;
import com.bjsxt.service.UserService;
public class ConsumerApp {
public static void main(String[] args) {
try{
//發佈的遠程服務的訪問 url
String name="rmi://localhost:8888/rmi";
//經過發佈的遠程服務的 url,得到遠程服務的代理對象
UserService userService = (UserService) Naming.lookup(name);
System.out.println("得到的遠程服務的代理對象:"
+userService.getClass().getName());
//經過遠程服務的代理對象調用遠程服務方法
String result = userService.helloRmi("rmi");
System.out.println("result="+result);
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
} } }
View Code

 

 

 

 3 服務提供者實現html

3.1 建立 ws-provider 項目
3.2 建立 UserService 接口
package com.bjsxt.service;
import javax.jws.WebService;
/***
* 須要發佈的服務對應的接口
* @author Administrator
* @WebService 發佈遠程的 web 服務,默認狀況下該接口中的
* 全部 public 方法都會被髮布
*/
@WebService
public interface UserService {
//@WebMethod()
public String sayHello(String name);
}
View Code

 

3.3 建立 UserServiceImpl 實現類
package com.bjsxt.service.impl;
import javax.jws.WebService;
import com.bjsxt.service.UserService;
@WebService
public class UserServiceImpl implements UserService {
@Override
public String sayHello(String name) {
// TODO Auto-generated method stub
return "hello "+name; } }
View Code

 

3.4 發佈 webservice 服務
package com.bjsxt.app;
import javax.xml.ws.Endpoint;
import com.bjsxt.service.UserService;
import com.bjsxt.service.impl.UserServiceImpl;
public class WsProviderApp {
public static void main(String[] args) {
/***
* 完成 webservice 服務的發佈
*/
//發佈的 webservice 服務的訪問地址
String address="http://localhost:9999/ws";
//建立 UserService 對象
UserService userService=new UserServiceImpl();
//發佈具體的 webservice 服務
Endpoint.publish(address, userService);
System.out.println("----------發佈 webservice 服務-------------");
} }
View Code

 

3.5 獲取 wdsl 文檔
 

 

 4 服務消費者實現java

4.1 建立 ws-consumer 項目
4.2wsimport 生成消費者代碼

 

 

4.3 消費遠程服務
package com.bjsxt.app;
import com.bjsxt.client.UserServiceImpl;
import com.bjsxt.client.UserServiceImplService;
public class WsConsumerApp {
public static void main(String[] args) {
/***
* 完成 webservice 服務的消費
*/
//建立服務類對象
UserServiceImplService service=new UserServiceImplService();
//得到遠程服務的代理對象
UserServiceImpl userService=service.getUserServiceImplPort();
System.out.println(userService.getClass().getName());
//進行遠程服務調用
String result = userService.sayHello("張三");
System.out.println("result="+result);
} }
View Code

 

 

 

 

 

<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.bjsxt.provider</groupId> <artifactId>order-sys</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <properties>
<!-- spring 依賴 --> <spring.version>4.3.18.RELEASE</spring.version> <jstl.version>1.2</jstl.version> <servlet-api.version>2.5</servlet-api.version> <jsp-api.version>2.0</jsp-api.version> <jackson.version>2.9.0</jackson.version>
</properties>
user-sys order-sys
<dependencies>
<!-- jsp 相關依賴 -->
<!-- servlet 依賴 -->
<!-- jstl 依賴 --> <dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>${servlet-api.version}</version> <scope>provided</scope>
</dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <version>${jsp-api.version}</version> <scope>provided</scope>
</dependency>
<!-- springmvc 依賴--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version>
</dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version>
</dependency>
</dependencies> <build> <finalName>order</finalName> <plugins>
<!-- 配置 Tomcat 插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration>
<path>/order</path> <port>7070</port>
</configuration>
</plugin>
</plugins>
</build>
</project>
View Code
 
3.3 建立 Order 訂單實體類 
package com.bjsxt.domain;
/***
* 訂單的實體類
* @author Administrator
*
*/
public class Order {
private String id;
private Double total;
private String date;
public String getId() {
return id; }
public void setId(String id) {
this.id = id; }
public Double getTotal() {
return total; }
public void setTotal(Double total) {
this.total = total; }
public String getDate() {
return date; }
public void setDate(String date) {
this.date = date; } }
View Code
 
3.4 建立 OrderController
package com.bjsxt.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.bjsxt.domain.Order;
@Controller
public class OrderController {
/**
* 接收 http 請求,響應訂單集合
* **/
@RequestMapping("/loadOrderList")
public String loadOrderList(String uid,Model model){
Order o1=new Order();
o1.setId("111");
o1.setTotal(123.0);
o1.setDate("2018-10-10");
Order o2=new Order();
o2.setId("222");
o2.setTotal(1232.0);
o2.setDate("2018-10-13");
Order o3=new Order();
o3.setId("333");
o3.setTotal(333.0);
o3.setDate("2018-10-31");
List<Order> list = new ArrayList<>();
list.add(o1);
list.add(o2);
list.add(o3);
model.addAttribute("list", list);
return "index.jsp"; }
/**
* 接收 http 請求,響應訂單集合,完成的是異步響應
* 將 List 集合序列化爲 json 串響應
* **/
@RequestMapping("/loadOrderList02")
@ResponseBody
public List<Order> loadOrderList02(String uid){
System.out.println("uid="+uid);
Order o1=new Order();
o1.setId("111");
o1.setTotal(123.0);
o1.setDate("2018-10-10");
Order o2=new Order();
o2.setId("222");
o2.setTotal(1232.0);
o2.setDate("2018-10-13");
Order o3=new Order();
o3.setId("333");
o3.setTotal(333.0);
o3.setDate("2018-10-31");
List<Order> list = new ArrayList<>();
list.add(o1);
list.add(o2);
list.add(o3);
return list;
} }
View Code
 
3.5 配置 springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 掃描 controller --> <context:component-scan base-package="com.bjsxt.controller" />
<mvc:annotation-driven></mvc:annotation-driven>
</beans>
View Code
 
3.6 配置 web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5"> <display-name>order</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/favicon.ico</url-pattern>
</servlet-mapping>
<!-- 以監聽器的方式啓動 spring 容器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 指定 spring 的配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext-*.xml</param-value>
</context-param>
<!-- POST 請求的亂碼過濾器 --> <filter><filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!-- 指定編碼方式 --> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value>
</init-param>
</filter>
<!-- 映射 filter --> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern>
</filter-mapping>
<!-- springmvc 的 servlet --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 指定 springmvc 的配置文件 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value>
</init-param>
<!-- 讓 springmvc 隨系統啓動而啓動 -->
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
View Code

 

3.7 啓動 order-sys 項目
4 服務消費者實現
4.1 建立 user-sys 項目 
<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.bjsxt.consumer</groupId> <artifactId>user-sys</artifactId> <version>0.0.1-SNAPSHOT</version>
<!-- 添加 httpClient 依賴 --> <dependencies> <dependency> <groupId>org.apache.httpcomponents</groupId> <version>4.3.5</version> <artifactId>httpclient</artifactId>
</dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version>
</dependency>
</dependencies>
</project>
View Code

 

4.2 拷貝 Order 訂單實體類
package com.bjsxt.domain;
/***
* 訂單的實體類
* @author Administrator
*
*/
public class Order {
private String id;
private Double total;
private String date;
public String getId() {
return id; }
public void setId(String id) {
this.id = id; }
public Double getTotal() {
return total; }
public void setTotal(Double total) {
this.total = total; }
public String getDate() {
return date; }
public void setDate(String date) {
this.date = date; } }
View Code

 

4.3 建立測試類
package com.bjsxt.test.client;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import com.alibaba.fastjson.JSON;
import com.bjsxt.domain.Order;
public class TestHttpClient {
public static void main(String[] args) 
throws ClientProtocolException, IOException {
/**
* 啓動消費者進行服務的消費
* httpClient 發送遠程請求,服務提供響應的爲 json,
* json 直接能夠解析 java 對象,或者 java 對象的集合
* **/
//建立 NameValuePair 對象,封裝發送服務提供者的參數
NameValuePair id=new BasicNameValuePair("uid","2002");
/*NameValuePair uname=new BasicNameValuePair("uname","10001");
NameValuePair address=new BasicNameValuePair("address","10001");
*/
List<NameValuePair> params = new ArrayList<>();
params.add(id);
//發送遠程的 http 請求的地址
String url="http://localhost:7070/order/loadOrderList02";
//建立 HttpClient 客戶端對象
HttpClient client=HttpClients.createDefault();
//建立 HttpPost 對象,發送 post 請求
HttpPost method=new HttpPost(url);
//封裝請求體數據
method.setEntity(new UrlEncodedFormEntity(params,"UTF-8"));
//發送具體的 http 請求
HttpResponse response = client.execute(method);
//得到響應頭信息
Header[] headers = response.getAllHeaders();
for(Header h:headers){
System.out.println(h.getName()+"-----"+h.getValue());
}
//得到服務提供者響應的具體數據
HttpEntity entity = response.getEntity();
//得到 http 的響應體
InputStream content = entity.getContent();
int len=0;
char[] buf = new char[1024];
//將字節流轉化爲字符流
InputStreamReader reader=new InputStreamReader(content);
//建立 StringBuffer
StringBuffer result = new StringBuffer();
while((len=reader.read(buf))!=-1){
result.append(String.valueOf(buf,0,len));
}
System.out.println(result);
//將 result,json 字符串解析爲 Order 集合
List<Order> list = JSON.parseArray(result.toString(), Order.class);
for(Order o:list){
System.out.println(o.getId()+"\t"+o.getDate()+"\t"+o.getTotal());
} } }
View Code

 

5GET 請求方式實現
 
 
1 本節任務
使用 Spring 提供的 restTemplate 完成 Http 服務消費
2RestTemplate 介紹
RestTemplate Spring 提供的用於訪問 Rest 服務的客戶端, RestTemplate 提供了多種便捷訪
問遠程 Http 服務的方法,可以大大提升客戶端的編寫效率。
3 服務消費者實現
3.1 業務需求說明
實現 : 經過紅包系統訪問訂單系統 , 得到某個用戶的訂單信息 , 派發紅包 .

 

 

3.2 建立 red-sys 項目
 
<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.bjsxt.red.consumer</groupId> <artifactId>red-sys</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <properties>
<!-- spring 依賴 --> <spring.version>4.3.18.RELEASE</spring.version> <jstl.version>1.2</jstl.version> <servlet-api.version>2.5</servlet-api.version> <jsp-api.version>2.0</jsp-api.version> <jackson.version>2.9.0</jackson.version>
</properties> <dependencies>
red-sys order-sys
<!-- jsp 相關依賴 -->
<!-- servlet 依賴 -->
<!-- jstl 依賴 --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>${jstl.version}</version>
</dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>${servlet-api.version}</version> <scope>provided</scope>
</dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <version>${jsp-api.version}</version> <scope>provided</scope>
</dependency>
<!-- springmvc 依賴--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version>
</dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version>
</dependency>
</dependencies> <build> <finalName>red</finalName> <plugins>
<!-- 配置 Tomcat 插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <path>/red</path> <port>8080</port>
</configuration>
</plugin>
</plugins>
</build>
</project>
View Code

 

3.3 拷貝 Order 訂單實體類
拷貝 order-sys 中的實體類
3.4 建立 RedController
package com.bjsxt.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Map.Entry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.client.RestTemplate;
import com.bjsxt.domain.Order;
@Controller
public class RedController {
//注入由 spring 提供的 RestTemplate 對象
@Autowired
private RestTemplate restTemplate;
/****
* 發送遠程的 http 請求,消費 http 服務
* 得到訂單對象的集合
*/
@RequestMapping("/loadOrderList01")
@ResponseBody
public List<Order> loadOrderList01(String uid){
//發送遠程 http 請求的 url
String url="http://localhost:7070/order/loadOrderList02";
//發送到遠程服務的參數
MultiValueMap<String, Object> params=new LinkedMultiValueMap();
params.add("uid", uid);
//經過 restTemplate 對象發送 post 請求
Order[] orders = restTemplate.postForObject(url, params, Order[].class);
return Arrays.asList(orders);
}
/****
* 發送遠程的 http 請求,消費 http 服務
* 得到訂單對象的集合
*/
@RequestMapping("/loadOrderList02")
@ResponseBody
public List<Order> loadOrderList02(String uid){
//發送遠程 http 請求的 url
String url="http://localhost:7070/order/loadOrderList02";
//發送到遠程服務的參數
MultiValueMap<String, Object> params=new LinkedMultiValueMap();
params.add("uid", uid);
//經過 restTemplate 對象發送 post 請求
ResponseEntity<Order[]> entity = restTemplate.postForEntity(url, params, 
Order[].class);
//restTemplate.getForObject(url, responseType)
//restTemplate.getForEntity(url, responseType);
//得到響應頭信息
HttpHeaders headers = entity.getHeaders();
for(Entry<String, List<String>> e:headers.entrySet()){
System.out.println(e.getKey()+"--------------"+e.getValue());
}
//得到響應狀態嗎
int status = entity.getStatusCodeValue();
System.out.println(status);
//得到遠程服務的響應體
Order[] orders =entity.getBody();
return Arrays.asList(orders);
} }
View Code
3.5 配置 springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 掃描 controller --> <context:component-scan base-package="com.bjsxt.controller" />
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 實例化 RestTemplate 對象 --> <bean id="restTemplate" class="org.springframework.web.client.RestTemplate"></bean>
</beans>
View Code

 

3.6 配置 web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5"> <display-name>red</display-name> <welcome-file-list>
<welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file>
</welcome-file-list> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/favicon.ico</url-pattern>
</servlet-mapping>
<!-- 以監聽器的方式啓動 spring 容器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 指定 spring 的配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext-*.xml</param-value>
</context-param>
<!-- POST 請求的亂碼過濾器 --> <filter><filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!-- 指定編碼方式 --> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value>
</init-param>
</filter>
<!-- 映射 filter --> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern>
</filter-mapping>
<!-- springmvc 的 servlet --> <servlet> <servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 指定 springmvc 的配置文件 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value>
</init-param>
<!-- 讓 springmvc 隨系統啓動而啓動 --> <load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
View Code

 

  3.7 啓動 order-sys
3.8 啓動訪問 red-sys
 
2 系統架構的演變
2.1 傳統的單體架構
2.1.1 什麼是單體架構
一個歸檔包(例如 war 格式或者 Jar 格式)包含了應用全部功能的應用程序,咱們一般稱之
爲單體應用。也稱之爲單體應用架構,這是一種比較傳統的架構風格。 
相關文章
相關標籤/搜索