日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Openshift:使用Java 8在Wildfly 8.2.0上构建Spring Boot应用程序

發(fā)布時(shí)間:2023/12/3 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Openshift:使用Java 8在Wildfly 8.2.0上构建Spring Boot应用程序 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

OpenShift DIY墨盒是在OpenShift上測試不受支持的語言的好方法。 但是它不具有可伸縮性(您可以在此處為可伸縮DIY墨盒投票),這使得它很難與生產(chǎn)級Spring Boot應(yīng)用程序一起使用。 但是,如果我們將Spring Boot應(yīng)用程序部署到WildFly Application Server,該怎么辦? Spring Boot可以與諸如Tomcat之類的嵌入式servlet容器一起運(yùn)行,也可以與速度更快的Undertow一起運(yùn)行,但是它也可以部署到獨(dú)立的應(yīng)用服務(wù)器上。 這意味著它也可以部署到OpenShift支持的WildFly應(yīng)用服務(wù)器。 讓我們來看看從頭開始創(chuàng)建Spring Boot應(yīng)用程序并將其部署到OpenShift上的WildFly 8.2多么容易。

注意 :在瀏覽OpenShift 文檔時(shí),您可能會認(rèn)為WildFly 8.1和Java 7均受支持(截至撰寫本文時(shí))。 幸運(yùn)的是,這不再是真的:WildFly 8.2和Java 8可以正常工作,并且實(shí)際上是默認(rèn)設(shè)置! 這是我第一次對文檔過時(shí)感到高興。

更新 :如果您正在尋找快速入門 ,而沒有逐步介紹,請查看: 快速入門:OpenShift上的Spring Boot和WildfFly 8.2

先決條件

在開始構(gòu)建應(yīng)用程序之前,您需要安裝一個OpenShift免費(fèi)帳戶和客戶端工具( rhc )。

創(chuàng)建WildFly應(yīng)用程序

要使用客戶端工具創(chuàng)建WildFly應(yīng)用程序,請鍵入以下命令:

rhc create-app boot jboss-wildfly-8 --scaling

jboss-wildfly-8盒帶描述為WildFly Application Server 8.2.0.Final。 使用縮放選項(xiàng),因?yàn)橐院髮o法設(shè)置它( 在此處投票)

創(chuàng)建應(yīng)用程序后,您應(yīng)該看到為您創(chuàng)建的管理用戶的用戶名和密碼。 請存儲這些憑據(jù),以便能夠登錄WildFly管理控制臺。

模板應(yīng)用程序源代碼

OpenShift創(chuàng)建一個模板項(xiàng)目。 該項(xiàng)目是標(biāo)準(zhǔn)的Maven項(xiàng)目。 您可以瀏覽pom.xml并看到該項(xiàng)目默認(rèn)使用Java 8。 此外,還有創(chuàng)建了兩個非標(biāo)準(zhǔn)文件夾: deployments ,用來把生成的存檔進(jìn)去, .openshift與OpenShift特定文件。 請注意.opensift/config 。 這是WildFly配置存儲的地方。

Spring Boot依賴項(xiàng)

作為依賴項(xiàng)管理,將使用Spring IO Platform。 使用Spring IO Platform的主要優(yōu)勢在于,它通過提供Spring項(xiàng)目的版本以及經(jīng)過測試并已知可以協(xié)同工作的依賴項(xiàng),簡化了依賴項(xiàng)管理。 通過添加以下內(nèi)容來修改pom.xml :

<dependencyManagement><dependencies><dependency><groupId>io.spring.platform</groupId><artifactId>platform-bom</artifactId><version>1.1.1.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies> </dependencyManagement>

現(xiàn)在,可以添加Spring Boot依賴項(xiàng)。 請注意,由于該應(yīng)用程序?qū)⒉渴鸬絎ildFly,因此我們需要顯式刪除對Tomcat的依賴。

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>

配置應(yīng)用程序

初始化Spring Boot應(yīng)用程序

具有所有依賴性,我們可以添加應(yīng)用程序代碼。 在demo包中創(chuàng)建Application.java 。 Application類的工作是啟動Spring Boot應(yīng)用程序,因此它必須從SpringBootServletInitializer擴(kuò)展并使用@SpringBootApplication進(jìn)行注釋。

package demo;import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.web.SpringBootServletInitializer;@SpringBootApplication public class Application extends SpringBootServletInitializer {}

@ Entity,@ Repository,@ Controller

Spring Data JPA是較大的Spring Data系列的一部分,可輕松實(shí)現(xiàn)基于JPA的存儲庫。 對于那些不熟悉該項(xiàng)目的人,請?jiān)L問: http : //projects.spring.io/spring-data-jpa/ 。

此示例項(xiàng)目的域模型只是具有一些基本字段的Person :

@Entity @Table(name = "people") public class Person {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)protected Integer id;@Column(name = "first_name")@NotEmptyprotected String firstName;@Column(name = "last_name")@NotEmptyprotected String lastName;@Column(name = "address")@NotEmptyprivate String address;@Column(name = "city")@NotEmptyprivate String city;@Column(name = "telephone")@NotEmpty@Digits(fraction = 0, integer = 10)private String telephone;}

該P(yáng)erson需要@Repository ,所以我們可以createa使用Spring的數(shù)據(jù)倉庫基礎(chǔ)之一。 通過簡單的接口定義,Spring Data存儲庫減少了許多樣板代碼:

@Repository public interface PeopleRepository extends PagingAndSortingRepository<Person, Integer> {List<Person> findByLastName(@Param("lastName") String lastName); }

使用域模型后,可以方便地使用一些測試數(shù)據(jù)。 最簡單的方法是為data.sql文件提供要在應(yīng)用程序啟動時(shí)執(zhí)行的SQL腳本。

創(chuàng)建src/main/resources/data.sql其中包含people表的初始數(shù)據(jù)(請參見下文)。 Spring Boot將選擇該文件并針對配置的數(shù)據(jù)源運(yùn)行。 由于使用的數(shù)據(jù)源正在連接到H2數(shù)據(jù)庫,因此必須使用正確的SQL語法:

INSERT INTO people VALUES (1, 'George', 'Franklin', '110 W. Liberty St.', 'Madison', '6085551023');

有了Spring Data JPA存儲庫后,我們可以創(chuàng)建一個簡單的控制器來通過REST公開數(shù)據(jù):

@RestController @RequestMapping("people") public class PeopleController {private final PeopleRepository peopleRepository;@Injectpublic PeopleController(PeopleRepository peopleRepository) {this.peopleRepository = peopleRepository;}@RequestMappingpublic Iterable<Person> findAll(@RequestParam Optional<String> lastName) {if (lastName.isPresent()) {return peopleRepository.findByLastName(lastName.get());}return peopleRepository.findAll();} }

findAll方法接受可選的lastName參數(shù),該參數(shù)綁定到Java的8 java.util.Optional 。

首頁

OpenShift在項(xiàng)目設(shè)置過程中生成的項(xiàng)目包含帶有一些靜態(tài)文件的webapp文件夾。 可以刪除這些文件,并可以修改index.html :

<!DOCTYPE html> <html> <head lang="en"><meta charset="UTF-8"><title>OpenShift</title> </head> <body> <form role="form" action="people"><fieldset><legend>People search</legend><label for="lastName">Last name:</label><input id="lastName" type="text" name="lastName" value="McFarland"/><input type="submit" value="Search"/></fieldset> </form> <p>... or: <a href="people">Find all ...</a> </p> </body> </html>

它只是一個靜態(tài)頁面,但是我注意到,如果沒有默認(rèn)映射( / )或返回的代碼不同于200 ,則應(yīng)用程序?qū)o法啟動。 通常,將始終存在默認(rèn)映射。

組態(tài)

創(chuàng)建src/main/resources/application.properties并輸入以下值:

  • management.context-path=/manage :執(zhí)行器默認(rèn)管理上下文路徑為/ 。 更改為/manage ,因?yàn)镺penShift公開了/health端點(diǎn)本身,該端點(diǎn)涵蓋了Actuator的/health端點(diǎn)。
  • spring.datasource.jndi-name=java:jboss/datasources/ExampleDS :由于應(yīng)用程序使用Spring Data JPA,因此我們希望通過JNDI綁定到服務(wù)器的數(shù)據(jù)源。 請查看.openshift/config/standalone.xml以獲取其他數(shù)據(jù)源。 如果您希望配置MySql或PostgreSQL與您的應(yīng)用程序一起使用,則這一點(diǎn)很重要。 在此處閱讀有關(guān)在Spring Boot中連接到JNDI數(shù)據(jù)源的更多信息: http : //docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-connecting-to-a-jndi-datasource
  • spring.jpa.hibernate.ddl-auto=create-drop :基于提供的實(shí)體創(chuàng)建數(shù)據(jù)庫的結(jié)構(gòu)。

部署到OpenShift

準(zhǔn)備將應(yīng)用程序推送到存儲庫。 提交本地更改,然后將其推送到遠(yuǎn)程:

git push

初始部署(構(gòu)建和應(yīng)用程序啟動)將花費(fèi)一些時(shí)間(最多幾分鐘)。 后續(xù)部署要快一些。 現(xiàn)在,您可以瀏覽到: http : //appname-yournamespace.rhcloud.com/ ,您應(yīng)該看到以下形式:

單擊具有默認(rèn)值的搜索將獲得ID = 3的記錄:

[{"id": 3,"firstName": "2693 Commerce St.","lastName": "McFarland","address": "Eduardo","city": "Rodriquez","telephone": "6085558763"} ]

導(dǎo)航到http://appname-yournamespace.rhcloud.com/people將返回?cái)?shù)據(jù)庫中的所有記錄。

走向Java 7

如果要在項(xiàng)目中使用Java 7,而不是默認(rèn)的Java 8, .openshift/markers/java8重命名為.openshift/markers/java7并相應(yīng)地更改pom.xml :

<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target><maven.compiler.fork>true</maven.compiler.fork> </properties>

請注意, maven.compiler.executable已刪除。 不要忘記更改@Controller的代碼并使它與Java 7兼容。

摘要

在此博客文章中,您學(xué)習(xí)了如何配置基本的Spring Boot應(yīng)用程序以及如何使用WildfFly 8.2和Java 8在OpenShift上運(yùn)行它。OpenShift使用Web代理HAProxy擴(kuò)展應(yīng)用程序。 OpenShift負(fù)責(zé)自動添加或刪除應(yīng)用程序副本以根據(jù)需要處理請求。

資源資源

  • https://github.com/kolorobot/openshift-wildfly-spring-boot-此博客文章的源代碼。

翻譯自: https://www.javacodegeeks.com/2015/02/openshift-build-spring-boot-application-on-wildfly-8-2-0-with-java-8.html

總結(jié)

以上是生活随笔為你收集整理的Openshift:使用Java 8在Wildfly 8.2.0上构建Spring Boot应用程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。