ゲートウェイ (gw-app) アプリに連絡先エンティティがあり、新しいユーザーが UAA アプリに登録されるたびにエントリを作成したいと考えています。Jhipster のマイクロサービスのドキュメントに記載されているサービス間通信を使用しようとしています。
@AuthorizedFeignClient
ここでの最初の問題は、UAA アプリにこのインターフェイスがないことです。- 第二に、 を使用して uaa から gw-app への作成に成功したことはありません
@FeignClient
。
偽のクライアントとの通信/構成の問題に加えて、セッションが確立されていない場合 (新規ユーザー登録) にこれがどのように機能するかについていくつかの懸念があり、ユーザー管理画面から既存のセッションがある別のユース ケースがあります。 (管理者が新しいユーザーを作成している場合)
UAA 構成
{
"generator-jhipster": {
"promptValues": {
"packageName": "com.uaa.auth",
"nativeLanguage": "es"
},
"jhipsterVersion": "4.13.3",
"baseName": "UAA",
"packageName": "com.agriket.auth",
"packageFolder": "com/uaa/auth",
"serverPort": "9999",
"authenticationType": "uaa",
"cacheProvider": "hazelcast",
"enableHibernateCache": true,
"websocket": false,
"databaseType": "sql",
"devDatabaseType": "mysql",
"prodDatabaseType": "mysql",
"searchEngine": "elasticsearch",
"messageBroker": false,
"serviceDiscoveryType": "eureka",
"buildTool": "gradle",
"enableSocialSignIn": false,
"enableSwaggerCodegen": false,
"jwtSecretKey": "8e4167f67e9f8d85cc35b70181a828c691374e58",
"enableTranslation": true,
"applicationType": "uaa",
"testFrameworks": [],
"jhiPrefix": "jhi",
"nativeLanguage": "es",
"languages": [
"es",
"en"
],
"clientPackageManager": "yarn",
"skipClient": true
}
}
ゲートウェイ アプリの構成
{
"generator-jhipster": {
"promptValues": {
"packageName": "com.app.gw",
"nativeLanguage": "es"
},
"jhipsterVersion": "4.13.3",
"baseName": "gwApp",
"packageName": "com.agriket.chat",
"packageFolder": "com/app/gw",
"serverPort": "9085",
"authenticationType": "uaa",
"uaaBaseName": "UAA",
"cacheProvider": "hazelcast",
"enableHibernateCache": true,
"websocket": "spring-websocket",
"databaseType": "sql",
"devDatabaseType": "mysql",
"prodDatabaseType": "mysql",
"searchEngine": "elasticsearch",
"messageBroker": false,
"serviceDiscoveryType": "eureka",
"buildTool": "gradle",
"enableSocialSignIn": false,
"enableSwaggerCodegen": false,
"clientFramework": "angularX",
"useSass": false,
"clientPackageManager": "yarn",
"applicationType": "gateway",
"testFrameworks": [],
"jhiPrefix": "jhi",
"enableTranslation": true,
"nativeLanguage": "es",
"languages": [
"es",
"en"
]
}
}
クライアントコード
package com.uaa.auth.service.restClient;
import com.uaa.auth.service.restClient.Contact;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.*;
@FeignClient(name = "gwApp")
@RequestMapping("/api")
public interface ContactClient {
@PostMapping("/contacts")
Contact createContact(@RequestBody Contact contact);
@GetMapping("/contacts/{id}")
Contact getContact(@PathVariable(name = "id") Long id);
}
コンタクト
public class Contact {
private Long id;
private String login;
private String firstName;
private String lastName;
public Contact(User user) {
this.id = user.getId();
this.firstName = user.getFirstName();
this.lastName = user.getLastName();
}
public Long getId() {
return id;
}
public String getLogin() {
return login;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
}