Openshift:使用Java 8在Wildfly 8.2.0上构建Spring Boot应用程序
OpenShift DIY墨盒是在OpenShift上測試不受支持的語言的好方法。 但是它不具有可伸縮性(您可以在此處為可伸縮DIY墨盒投票),這使得它很難與生產級Spring Boot應用程序一起使用。 但是,如果我們將Spring Boot應用程序部署到WildFly Application Server,該怎么辦? Spring Boot可以與諸如Tomcat之類的嵌入式servlet容器一起運行,也可以與速度更快的Undertow一起運行,但是它也可以部署到獨立的應用服務器上。 這意味著它也可以部署到OpenShift支持的WildFly應用服務器。 讓我們來看看從頭開始創建Spring Boot應用程序并將其部署到OpenShift上的WildFly 8.2多么容易。
注意 :在瀏覽OpenShift 文檔時,您可能會認為WildFly 8.1和Java 7均受支持(截至撰寫本文時)。 幸運的是,這不再是真的:WildFly 8.2和Java 8可以正常工作,并且實際上是默認設置! 這是我第一次對文檔過時感到高興。
更新 :如果您正在尋找快速入門 ,而沒有逐步介紹,請查看: 快速入門:OpenShift上的Spring Boot和WildfFly 8.2
先決條件
在開始構建應用程序之前,您需要安裝一個OpenShift免費帳戶和客戶端工具( rhc )。
創建WildFly應用程序
要使用客戶端工具創建WildFly應用程序,請鍵入以下命令:
rhc create-app boot jboss-wildfly-8 --scalingjboss-wildfly-8盒帶描述為WildFly Application Server 8.2.0.Final。 使用縮放選項,因為以后將無法設置它( 在此處投票)
創建應用程序后,您應該看到為您創建的管理用戶的用戶名和密碼。 請存儲這些憑據,以便能夠登錄WildFly管理控制臺。
模板應用程序源代碼
OpenShift創建一個模板項目。 該項目是標準的Maven項目。 您可以瀏覽pom.xml并看到該項目默認使用Java 8。 此外,還有創建了兩個非標準文件夾: deployments ,用來把生成的存檔進去, .openshift與OpenShift特定文件。 請注意.opensift/config 。 這是WildFly配置存儲的地方。
Spring Boot依賴項
作為依賴項管理,將使用Spring IO Platform。 使用Spring IO Platform的主要優勢在于,它通過提供Spring項目的版本以及經過測試并已知可以協同工作的依賴項,簡化了依賴項管理。 通過添加以下內容來修改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>現在,可以添加Spring Boot依賴項。 請注意,由于該應用程序將部署到WildFly,因此我們需要顯式刪除對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>配置應用程序
初始化Spring Boot應用程序
具有所有依賴性,我們可以添加應用程序代碼。 在demo包中創建Application.java 。 Application類的工作是啟動Spring Boot應用程序,因此它必須從SpringBootServletInitializer擴展并使用@SpringBootApplication進行注釋。
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系列的一部分,可輕松實現基于JPA的存儲庫。 對于那些不熟悉該項目的人,請訪問: http : //projects.spring.io/spring-data-jpa/ 。
此示例項目的域模型只是具有一些基本字段的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;}該Person需要@Repository ,所以我們可以createa使用Spring的數據倉庫基礎之一。 通過簡單的接口定義,Spring Data存儲庫減少了許多樣板代碼:
@Repository public interface PeopleRepository extends PagingAndSortingRepository<Person, Integer> {List<Person> findByLastName(@Param("lastName") String lastName); }使用域模型后,可以方便地使用一些測試數據。 最簡單的方法是為data.sql文件提供要在應用程序啟動時執行的SQL腳本。
創建src/main/resources/data.sql其中包含people表的初始數據(請參見下文)。 Spring Boot將選擇該文件并針對配置的數據源運行。 由于使用的數據源正在連接到H2數據庫,因此必須使用正確的SQL語法:
INSERT INTO people VALUES (1, 'George', 'Franklin', '110 W. Liberty St.', 'Madison', '6085551023');有了Spring Data JPA存儲庫后,我們可以創建一個簡單的控制器來通過REST公開數據:
@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參數,該參數綁定到Java的8 java.util.Optional 。
首頁
OpenShift在項目設置過程中生成的項目包含帶有一些靜態文件的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>它只是一個靜態頁面,但是我注意到,如果沒有默認映射( / )或返回的代碼不同于200 ,則應用程序將無法啟動。 通常,將始終存在默認映射。
組態
創建src/main/resources/application.properties并輸入以下值:
- management.context-path=/manage :執行器默認管理上下文路徑為/ 。 更改為/manage ,因為OpenShift公開了/health端點本身,該端點涵蓋了Actuator的/health端點。
- spring.datasource.jndi-name=java:jboss/datasources/ExampleDS :由于應用程序使用Spring Data JPA,因此我們希望通過JNDI綁定到服務器的數據源。 請查看.openshift/config/standalone.xml以獲取其他數據源。 如果您希望配置MySql或PostgreSQL與您的應用程序一起使用,則這一點很重要。 在此處閱讀有關在Spring Boot中連接到JNDI數據源的更多信息: http : //docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-connecting-to-a-jndi-datasource
- spring.jpa.hibernate.ddl-auto=create-drop :基于提供的實體創建數據庫的結構。
部署到OpenShift
準備將應用程序推送到存儲庫。 提交本地更改,然后將其推送到遠程:
git push初始部署(構建和應用程序啟動)將花費一些時間(最多幾分鐘)。 后續部署要快一些。 現在,您可以瀏覽到: http : //appname-yournamespace.rhcloud.com/ ,您應該看到以下形式:
單擊具有默認值的搜索將獲得ID = 3的記錄:
[{"id": 3,"firstName": "2693 Commerce St.","lastName": "McFarland","address": "Eduardo","city": "Rodriquez","telephone": "6085558763"} ]導航到http://appname-yournamespace.rhcloud.com/people將返回數據庫中的所有記錄。
走向Java 7
如果要在項目中使用Java 7,而不是默認的Java 8, .openshift/markers/java8重命名為.openshift/markers/java7并相應地更改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兼容。
摘要
在此博客文章中,您學習了如何配置基本的Spring Boot應用程序以及如何使用WildfFly 8.2和Java 8在OpenShift上運行它。OpenShift使用Web代理HAProxy擴展應用程序。 OpenShift負責自動添加或刪除應用程序副本以根據需要處理請求。
資源資源
- 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
總結
以上是生活随笔為你收集整理的Openshift:使用Java 8在Wildfly 8.2.0上构建Spring Boot应用程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑显示器最小尺寸(电脑显示器屏幕尺寸大
- 下一篇: 以编程方式确定Java类的JDK编译版本