Aktualizowanie starszych aplikacji Java usługi Service Fabric w celu pobierania bibliotek z narzędzia Maven
Pliki binarne Java usługi Service Fabric zostały przeniesione z zestawu Java SDK usługi Service Fabric do hostingu narzędzia Maven. Możesz użyć narzędzia mavencentral , aby pobrać najnowsze zależności java usługi Service Fabric. Ten przewodnik pomoże Ci zaktualizować istniejące aplikacje Java utworzone dla zestawu JAVA SDK usługi Service Fabric przy użyciu szablonu narzędzia Yeoman lub środowiska Eclipse, aby były zgodne z kompilacją opartą na narzędziu Maven.
Wymagania wstępne
Najpierw odinstaluj istniejący zestaw JAVA SDK.
sudo dpkg -r servicefabricsdkjava
Zainstaluj najnowszy interfejs wiersza polecenia usługi Service Fabric, wykonując kroki wymienione tutaj.
Aby skompilować aplikacje Java usługi Service Fabric i pracować z nimi, upewnij się, że masz zainstalowany zestaw JDK 1.8 i narzędzie Gradle. Jeśli ich jeszcze nie zainstalowano, możesz uruchomić następujące polecenia, aby zainstalować zestaw JDK 1.8 (openjdk-8-jdk) i narzędzie Gradle:
sudo apt-get install openjdk-8-jdk-headless sudo apt-get install gradle
Zaktualizuj skrypty instalacji/dezinstalacji aplikacji w celu używania nowego interfejsu wiersza polecenia usługi Service Fabric, wykonując kroki wymienione tutaj. Możesz skorzystać z naszych przykładów ułatwiających rozpoczęcie pracy.
Napiwek
Po odinstalowaniu zestawu SDK Java usługi Service Fabric narzędzie Yeoman nie będzie działać. Spełnij wymagania wstępne opisane tutaj, aby mieć działający generator szablonów Yeoman usługi Service Fabric dla języka Java.
Biblioteki Java usługi Service Fabric w narzędziu Maven
Biblioteki Java usługi Service Fabric są teraz hostowane w narzędziu Maven. Zależności możesz dodać w pliku pom.xml
lub build.gradle
projektów, aby używać bibliotek Java usługi Service Fabric z repozytorium mavenCentral.
Aktorzy
Obsługa interfejsu Reliable Actors usługi Service Fabric dla Twojej aplikacji.
<dependency>
<groupId>com.microsoft.servicefabric</groupId>
<artifactId>sf-actors</artifactId>
<version>1.0.0</version>
</dependency>
repositories {
mavenCentral()
}
dependencies {
compile 'com.microsoft.servicefabric:sf-actors:1.0.0'
}
Usługi
Obsługa usługi bezstanowej usługi Service Fabric dla Twojej aplikacji.
<dependency>
<groupId>com.microsoft.servicefabric</groupId>
<artifactId>sf-services</artifactId>
<version>1.0.0</version>
</dependency>
repositories {
mavenCentral()
}
dependencies {
compile 'com.microsoft.servicefabric:sf-services:1.0.0'
}
Inne
Transport
Obsługa warstwy transportowej dla aplikacji Java usługi Service Fabric. Nie trzeba jawnie dodawać tej zależności do aplikacji Reliable Actors lub aplikacji usługi, chyba że programujesz w warstwie transportowej.
<dependency>
<groupId>com.microsoft.servicefabric</groupId>
<artifactId>sf-transport</artifactId>
<version>1.0.0</version>
</dependency>
repositories {
mavenCentral()
}
dependencies {
compile 'com.microsoft.servicefabric:sf-transport:1.0.0'
}
Obsługa usługi Service Fabric
Obsługa na poziomie systemu dla usługi Service Fabric, która komunikuje się z natywnym środowiskiem uruchomieniowym usługi Service Fabric. Nie trzeba jawnie dodawać tej zależności do aplikacji Reliable Actors lub aplikacji usługi. Jest ona automatycznie pobierana z narzędzia Maven, kiedy uwzględnisz pozostałe powyższe zależności.
<dependency>
<groupId>com.microsoft.servicefabric</groupId>
<artifactId>sf</artifactId>
<version>1.0.0</version>
</dependency>
repositories {
mavenCentral()
}
dependencies {
compile 'com.microsoft.servicefabric:sf:1.0.0'
}
Migrowanie usługi bezstanowej usługi Service Fabric
Aby móc kompilować istniejącą usługę bezstanową Java usługi Service Fabric przy użyciu zależności pobieranych z narzędzia Maven, musisz zaktualizować plik build.gradle
wewnątrz usługi. Wcześniej wyglądał on następująco:
dependencies {
compile fileTree(dir: '/opt/microsoft/sdk/servicefabric/java/packages/lib', include: ['*.jar'])
compile project(':Interface')
}
.
.
.
jar {
manifest {
attributes(
'Main-Class': 'statelessservice.MyStatelessServiceHost',
"Class-Path": configurations.compile.collect { 'lib/' + it.getName() }.join(' '))
baseName "MyStateless"
destinationDir = file('./../MyStatelessApplication/MyStatelessPkg/Code')
}
.
.
.
task copyDeps <<{
copy {
from("/opt/microsoft/sdk/servicefabric/java/packages/lib")
into("./../MyStatelessApplication/MyStatelessPkg/Code/lib")
include('*.jar')
}
copy {
from("/opt/microsoft/sdk/servicefabric/java/packages/lib")
into("./../MyStatelessApplication/MyStatelessPkg/Code/lib")
include('libj*.so')
}
}
Teraz, aby pobrać zależności z narzędzia Maven, aktualizacja build.gradle
będzie miała odpowiednie części w następujący sposób :
repositories {
mavenCentral()
}
configurations {
azuresf
}
dependencies {
compile project(':Interface')
azuresf ('com.microsoft.servicefabric:sf-services:1.0.0')
compile fileTree(dir: 'lib', include: '*.jar')
}
task explodeDeps(type: Copy, dependsOn:configurations.azuresf) { task ->
configurations.azuresf.filter { it.toString().contains("native") }.each{
from zipTree(it)
}
configurations.azuresf.filter { !it.toString().contains("native") }.each {
from it
}
into "lib"
include "libj*.so", "*.jar"
}
compileJava.dependsOn(explodeDeps)
.
.
.
jar {
manifest {
def mpath = configurations.compile.collect {'lib/'+it.getName()}.join (' ')
mpath = mpath + ' ' + configurations.azuresf.collect {'lib/'+it.getName()}.join (' ')
attributes(
'Main-Class': 'statelessservice.MyStatelessServiceHost',
"Class-Path": mpath)
baseName "MyStateless"
destinationDir = file('./../MyStatelessApplication/MyStatelessPkg/Code')
}
}
.
.
.
task copyDeps <<{
copy {
from("lib/")
into("./../MyStatelessApplication/MyStatelessPkg/Code/lib")
include('*')
}
}
Aby zyskać ogólne pojęcie o tym, jak będzie wyglądać skrypt kompilacji dla usługi bezstanowej Java usługi Service Fabric, możesz odwołać się do dowolnego przykładu w naszych przykładach ułatwiających rozpoczęcie pracy. Tutaj znajdziesz plik build.gradle dla przykładu serwera EchoServer.
Migrowanie usługi aktora usługi Service Fabric
Aby móc kompilować istniejącą aplikację Java aktora usługi Service Fabric przy użyciu zależności pobieranych z narzędzia Maven, musisz zaktualizować plik build.gradle
wewnątrz pakietu interfejsu i w pakiecie usługi. Jeśli masz pakiet TestClient, również musisz go zaktualizować. A więc dla Twojej aktora Myactor
należałoby zaktualizować go w następujących miejscach:
./Myactor/build.gradle
./MyactorInterface/build.gradle
./MyactorTestClient/build.gradle
Aktualizowanie skryptu kompilacji dla projektu interfejsu
Wcześniej wyglądał on następująco:
dependencies {
compile fileTree(dir: '/opt/microsoft/sdk/servicefabric/java/packages/lib', include: ['*.jar'])
}
.
.
Teraz, aby pobrać zależności z narzędzia Maven, aktualizacja build.gradle
będzie miała odpowiednie części w następujący sposób :
repositories {
mavenCentral()
}
configurations {
azuresf
}
dependencies {
azuresf ('com.microsoft.servicefabric:sf-actors:1.0.0')
compile fileTree(dir: 'lib', include: '*.jar')
}
task explodeDeps(type: Copy, dependsOn:configurations.azuresf) { task ->
configurations.azuresf.filter { it.toString().contains("native") }.each{
from zipTree(it)
}
configurations.azuresf.filter { !it.toString().contains("native") }.each {
from it
}
into "lib"
include "libj*.so", "*.jar"
}
compileJava.dependsOn(explodeDeps)
.
.
Aktualizowanie skryptu kompilacji dla projektu aktora
Wcześniej wyglądał on następująco:
dependencies {
compile fileTree(dir: '/opt/microsoft/sdk/servicefabric/java/packages/lib', include: ['*.jar'])
compile project(':MyactorInterface')
}
.
.
.
jar {
manifest {
attributes(
'Main-Class': 'reliableactor.MyactorHost',
"Class-Path": configurations.compile.collect { 'lib/' + it.getName() }.join(' '))
baseName "myactor"
destinationDir = file('./../myjavaapp/MyactorPkg/Code')
}
}
.
.
.
task copyDeps<< {
copy {
from("/opt/microsoft/sdk/servicefabric/java/packages/lib")
into("./../myjavaapp/MyactorPkg/Code/lib")
include('*.jar')
}
copy {
from("/opt/microsoft/sdk/servicefabric/java/packages/lib")
into("./../myjavaapp/MyactorPkg/Code/lib")
include('libj*.so')
}
copy {
from("../MyactorInterface/out/lib")
into("./../myjavaapp/MyactorPkg/Code/lib")
include('*.jar')
}
}
Teraz, aby pobrać zależności z narzędzia Maven, aktualizacja build.gradle
będzie miała odpowiednie części w następujący sposób :
repositories {
mavenCentral()
}
configurations {
azuresf
}
dependencies {
compile project(':MyactorInterface')
azuresf ('com.microsoft.servicefabric:sf-actors:1.0.0')
compile fileTree(dir: 'lib', include: '*.jar')
}
task explodeDeps(type: Copy, dependsOn:configurations.azuresf) { task ->
configurations.azuresf.filter { it.toString().contains("native") }.each{
from zipTree(it)
}
configurations.azuresf.filter { !it.toString().contains("native") }.each {
from it
}
into "lib"
include "libj*.so", "*.jar"
}
compileJava.dependsOn(explodeDeps)
.
.
.
jar {
manifest {
def mpath = configurations.compile.collect {'lib/'+it.getName()}.join (' ')
mpath = mpath + ' ' + configurations.azuresf.collect {'lib/'+it.getName()}.join (' ')
attributes(
'Main-Class': 'reliableactor.MyactorHost',
"Class-Path": mpath)
baseName "myactor"
destinationDir = file('../myjavaapp/MyactorPkg/Code')}
}
.
.
.
task copyDeps<< {
copy {
from("lib/")
into("../myjavaapp/MyactorPkg/Code/lib")
include('*')
}
copy {
from("../MyactorInterface/out/lib")
into("../myjavaapp/MyactorPkg/Code/lib")
include('*.jar')
}
}
Aktualizowanie skryptu kompilacji dla projektu klienta testowego
Zmiany tutaj są podobne do zmian opisanych w poprzedniej sekcji, dotyczącej projektu aktora. Wcześniej skrypt Gradle wyglądał następująco:
dependencies {
compile fileTree(dir: '/opt/microsoft/sdk/servicefabric/java/packages/lib', include: ['*.jar'])
compile project(':MyactorInterface')
}
.
.
.
jar
{
manifest {
attributes(
'Main-Class': 'reliableactor.test.MyactorTestClient',
"Class-Path": configurations.compile.collect { 'lib/' + it.getName() }.join(' '))
}
baseName "myactor-test"
destinationDir = file('out/lib')
}
.
.
.
task copyDeps<< {
copy {
from("/opt/microsoft/sdk/servicefabric/java/packages/lib")
into("./out/lib/lib")
include('*.jar')
}
copy {
from("/opt/microsoft/sdk/servicefabric/java/packages/lib")
into("./out/lib/lib")
include('libj*.so')
}
copy {
from("../MyactorInterface/out/lib")
into("./out/lib/lib")
include('*.jar')
}
}
Teraz, aby pobrać zależności z narzędzia Maven, aktualizacja build.gradle
będzie miała odpowiednie części w następujący sposób :
repositories {
mavenCentral()
}
configurations {
azuresf
}
dependencies {
compile project(':MyactorInterface')
azuresf ('com.microsoft.servicefabric:sf-actors:1.0.0')
compile fileTree(dir: 'lib', include: '*.jar')
}
task explodeDeps(type: Copy, dependsOn:configurations.azuresf) { task ->
configurations.azuresf.filter { it.toString().contains("native") }.each{
from zipTree(it)
}
configurations.azuresf.filter { !it.toString().contains("native") }.each {
from it
}
into "lib"
include "libj*.so", "*.jar"
}
compileJava.dependsOn(explodeDeps)
.
.
.
jar
{
manifest {
def mpath = configurations.compile.collect {'lib/'+it.getName()}.join (' ')
mpath = mpath + ' ' + configurations.azuresf.collect {'lib/'+it.getName()}.join (' ')
attributes(
'Main-Class': 'reliableactor.test.MyactorTestClient',
"Class-Path": mpath)
baseName "myactor-test"
destinationDir = file('./out/lib')
}
}
.
.
.
task copyDeps<< {
copy {
from("lib/")
into("./out/lib/lib")
include('*')
}
copy {
from("../MyactorInterface/out/lib")
into("./out/lib/lib")
include('*.jar')
}
}
Następne kroki
- Create and deploy your first Service Fabric Java application on Linux using Yeoman (Tworzenie i wdrażanie pierwszej aplikacji Java usługi Service Fabric w systemie Linux przy użyciu programu Yeoman)
- Create and deploy your first Service Fabric Java application on Linux using Service Fabric Plugin for Eclipse (Tworzenie i wdrażanie pierwszej aplikacji Java usługi Service Fabric w systemie Linux przy użyciu wtyczki usługi Service Fabric dla środowiska Eclipse)
- Interact with Service Fabric clusters using the Service Fabric CLI (Interakcja z klastrami usługi Service Fabric przy użyciu interfejsu wiersza polecenia usługi Service Fabric)