spring boot 여러 요청 서비스 에이전트 의 전체 절 차 를 설정 합 니 다.
6887 단어 springboot청구 하 다.대리
가끔 우 리 는 다음 과 같은 수요 가 있 을 수 있다.
즉,분포 식 서비스 에 대해 저 희 는 다양한 업무 인터페이스 서 비 스 를 제공 할 수 있 습 니 다.그러나 서버 에서 하나의 서비스 포트 만 개방 하 라 고 요구 할 수 있 습 니 다.예 를 들 어 위의 restA 프로젝트 포트 는 대외 적 으로 개방 되 었 지만 restB 프로젝트 포트 는 대외 적 으로 개방 되 지 않 았 습 니 다.이런 문 제 는 사용자 가 restB 프로젝트 를 직접 요청 할 수 없다 는 것 입 니 다.
restA 를 방문 하여 요청 경로 가 일정한 규범 에 부합 할 때,예 를 들 어http://ip:port/test ,요청 중 rest 로 시작 할 때 restB 프로젝트 에 요청 을 다시 전송 하면 됩 니 다.
물론 대리 리 트 윗 은 많은 해결 방법 이 있 습 니 다.nginx,zuul 등 이 모두 실현 할 수 있 지만 nginx 는 간단 하지만 하나의 서 비 스 를 더 설치 해 야 합 니 다.zuul 설정 이 귀 찮 습 니 다.
바 이 두 를 거 친 후에 여기 서 말 하고 자 하 는 것 을 발 견 했 습 니 다.ServletRegistration Bean 의 주입 은 servlet 를 도입 하 는 것 과 같 습 니 다.구체 적 으로 보지 못 했 습 니 다.
다음은 설정 절 차 를 쓰 겠 습 니 다.
1.프로젝트 구조 및 소개
다음은 제 프로젝트 구조 입 니 다.아래 에 파란색 항목 을 선택 하면 저희 가 설정 할 항목 입 니 다.다른 항목 은 무시 합 니 다.저희 가 dubbo 와 zookeeper 를 기반 으로 설정 할 때 사용 합 니 다.
프로젝트 를 GitHub 에 올 렸 습 니 다.프로젝트 를 다운로드 하 십시오GitHub 주소
이 프로젝트 에 대한 소 개 는 아래 와 같 습 니 다.그리고 그림 을 곁들여 소개 하 겠 습 니 다.
위의 그림 에서 suite one service,suite to service,masterservice 프로젝트 는 우리 의 서비스 인터페이스 발표 자 프로젝트 입 니 다.여기 서 나 는 단지 그림 을 그 렸 을 뿐,우리 가 배치 하고 자 하 는 내용 과 는 무관 하 다.
suiteone,suitetwo 프로젝트 포트 는 외부 에 두 지 않 았 습 니 다.사용 자 는 직접 방문 할 수 없습니다.master 프로젝트 는 직접 방문 할 수 있 기 때문에 사용 자 는 master 프로젝트 를 방문 한 다음 에 master 프로젝트 에서 요청 에이전트 에 게 이 두 항목 으로 전송 합 니 다.
2.구체 적 인 배치 절차
주요 설정 이 적 습 니 다.모두 master 프로젝트 에 있 습 니 다.
(1)도입 의존:
<!--ProxyFilter -->
<dependency>
<groupId>org.mitre.dsmiley.httpproxy</groupId>
<artifactId>smiley-http-proxy-servlet</artifactId>
<version>1.7</version>
</dependency>
(2)설정 클래스 설정:이 종 류 는 다운로드 한 master 프로젝트 의 설정 을 참조 할 수 있 습 니 다.
package microservice.sc.config;
import org.mitre.dsmiley.httpproxy.ProxyServlet;
import org.springframework.boot.bind.RelaxedPropertyResolver;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.EnvironmentAware;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
/**
* Created by lsf on 2018/7/31.
*/
@Configuration
public class ProxyServletConfiguration implements EnvironmentAware {
@Bean
public ServletRegistrationBean servletRegistrationBean(){
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new ProxyServlet(), propertyResolver.getProperty("servlet_url_one"));
// setName , ,
servletRegistrationBean.setName("suitone");
servletRegistrationBean.addInitParameter("targetUri", propertyResolver.getProperty("target_url_one"));
servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, propertyResolver.getProperty("logging_enabled", "false"));
return servletRegistrationBean;
}
@Bean
public ServletRegistrationBean servletRegistrationBean2(){
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new ProxyServlet(), propertyResolver.getProperty("servlet_url_two"));
// setName , ,
servletRegistrationBean.setName("suittwo");
servletRegistrationBean.addInitParameter("targetUri", propertyResolver.getProperty("target_url_two"));
servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, propertyResolver.getProperty("logging_enabled", "false"));
return servletRegistrationBean;
}
private RelaxedPropertyResolver propertyResolver;
@Override
public void setEnvironment(Environment environment) {
this.propertyResolver = new RelaxedPropertyResolver(environment, "proxy.test.");
}
}
(3)프 록 시 주소 설정:master 프로젝트 의 주 프로필,즉 application.properties 파일 에 다음 과 같은 내용 을 추가 합 니 다.
# testone 30001
proxy.test.servlet_url_one=/testone/*
proxy.test.target_url_one=http://localhost:30001
# testtwo 30002
proxy.test.servlet_url_two=/testtwo/*
proxy.test.target_url_two=http://localhost:30002
위의 설정 을 간단하게 소개 합 니 다.testone/*와 같은 쓰기 방법 은 요청 경 로 를 testone 으로 시작 하 는 것 을 의미 합 니 다.예 를 들 어http://localhost:30000/testone/test/get1 이러한 경로,요청 한 실제 경 로 는?http://localhost:30001/test/get1 。주로 testone 을 대응 하 는 프 록 시 경로 로 바 꾸 는 것 입 니 다.*실제 요청 항목 의 인터페이스 경로 입 니 다!!!300001 포트 는 suite one 프로젝트 이 고 300002 포트 는 suite two 프로젝트 입 니 다.프로젝트 를 다운로드 한 후에 각각 master,suite one,suite two 프로젝트 의 시작 류 를 시작 하고 시작 이 완료 되면 방문 합 니 다.http://localhost:30000/testone/test/get1 suite one 프로젝트 test/get1 인터페이스의 내용 을 되 돌려 줍 니 다.
이 설정 은 get,post 요청 에 모두 유효 합 니 다.
이상 은 완전한 설정 내용 입 니 다.
모 르 는 것 이 있 으 면 항목 을 다운로드 해서 볼 수 있 습 니 다GitHub 주소
총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin Springboot -- 파트 14 사용 사례 REST로 전환하여 POST로 JSON으로 전환前回 前回 前回 記事 の は は で で で で で で を 使っ 使っ 使っ て て て て て リクエスト を を 受け取り 、 reqeustbody で 、 その リクエスト の ボディ ボディ を を 受け取り 、 関数 内部 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.