Meecrowave 由以下組件組成:
CoreTesting (JUnit 和 Arquillian)Monitoring (Jolokia)JTAOAuth2核心組件定義了一系列配置和命令行界面(CLI)選項。還可以通過實現(xiàn) Cli.Options 接口并使用 @CliOption 注釋來定義自定義 CLI 選項,如下文所示。
Maven 和 Gradle 組件提供與核心配置和 CLI 選項對應(yīng)的屬性,并允許更改默認值。
入門
以下 JAX-RS 示例演示如何開始使用 Meecrowave 。
Defaults 類為示例應(yīng)用程序定義了 fisrtName 和 lastName。請注意使用名為 app-default-name 的選項來擴展 CLI 以及相應(yīng)的描述。
public class Defaults implements Cli.Options { @CliOption(name="app-default-name", description="The default first and last names for the app.") private String firstName="Michael"; private String lastName="Redlich"; public String getFirstName() { return firstName; } public String getLastName() { return lastName; } }DefaultsProducer 類注入了 Meecrowave 的 Builder 類的實例,用于啟動 Meecrowave 。通過 getExtension() 方法來獲取 Defaults 類中的 @CliOption 注釋中定義的名稱和描述。
@Dependentpublic class DefaultsProducer { @Inject private Meecrowave.Builder builder; @Produces @ApplicationScoped public Defaults defaults() { return builder.getExtension(Defaults.class); } }SimpleApplication 類定義了主應(yīng)用程序路徑,redlich:
@Dependent@ApplicationPath("redlich")public class SimpleApplication extends Application { }SimpleEndpoint 類定義了端點、meecrowave、URL查詢參數(shù)、firstName 和 lastName,以及一個內(nèi)部類,Hello,用于為名稱建模的 Java bean。
@Path("meecrowave")@ApplicationScopedpublic class SimpleEndpoint { @Inject private Defaults defaults; @GET @Produces(MediaType.APPLICATION_JSON) public Hello sayFullName(@QueryParam("firstName") final String firstName,@QueryParam("lastName") final String lastName) { return new Hello(ofNullable(firstName).orElse(defaults.getFirstName()),ofNullable(lastName).orElse(defaults.getLastName())); } public static class Hello { private String firstName; private String lastName; public Hello() { } private Hello(final String firstName,final String lastName) { setFirstName(firstName); setLastName(lastName); } public String getFirstName() { return firstName; } public void setFirstName(final String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(final String lastName) { this.lastName = lastName; } } }編譯并運行 Maven:
mvn clean package meecrowave:run服務(wù)器運行后,完整的 URL 由主應(yīng)用程序路徑和端點組成,其可在瀏覽器中輸入:
http://localhost:8080/redlich/meecrowave注意顯示 “Michael” 和 “Redlich” 的默認值。 URL 查詢參數(shù)可用于更改在 firstName 和 lastName 中定義的默認值。以下是通過 URL 只更改 firstName 的示例:
http://localhost:8080/redlich/meecrowave?firstName=Rowena下一個示例演示如何通過 URL 同時更改 firstName 和 lastName:
http://localhost:8080/redlich/meecrowave?firstName=Barry&lastName=Burd可以在 GitHub 上找到完整的示例應(yīng)用程序。
Meecrowave 也有同伴項目:
Apache DeltaSpike(配置、異常處理、高級 CDI)Apache Sirona(監(jiān)控)新的 CDI 2.0 規(guī)范的支持越來越受關(guān)注,Apache 最近發(fā)布了旨在使用新 CDI 2.0 規(guī)范的 OpenWebBeans 2.0.0。