技術ブログを開設する
ログイン
プログラマのための技術ブログプラットフォーム
  • 前書き
    OracleCodeOneでJakartaEEのハンズオンをやってたみたいなので、それをやりつつGlassfishもためしつつでやってみる。
    (ほとんどまんまやってるので、とくに目新しいことはないです。)
    ※参考
    https://github.com/javaee/j1-hol

2.pom.xmlの設定
「Projenct Files」→「pom.xml」を選択し以下の通り記述を書き換える。

<dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <!-- <version>7.0</version> -->  
            <version>8.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                <!--<source>1.7</source>
                    <target>1.7</target> -->
                    <source>1.8</source>
                    <target>1.8</target>
                    <compilerArguments>
                        <endorseddirs>${endorsed.dir}</endorseddirs>
                    </compilerArguments>
                </configuration>
            </plugin>
          </build>
        </plugins>

3.動かすのに必要なクラスの作成
・「JsonBBeanValPracticeService」クラスの作成

@Path("jsonbbea nval")
public class JsonBBeanValPracticeService {

@Inject
private Validator validator;

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Response getJson() {
        Response response;
        Set<ConstraintViolation<List<Customer>>> constraintViolations = validator.validate(customerList);
        populateCustomerList();
        Jsonb jsonb = JsonbBuilder.create();
        if (!constraintViolations.isEmpty()) {
            constraintViolations.forEach(
                    constraintViolation -> System.out.println(constraintViolation.getMessage()));

            response = Response.serverError().build();
        } else {
            String json = jsonb.toJson(customerList);
            response = Response.ok(json).

            }
        return response;
}

・「JsonBBeanValPracticeService」にカーソルを合わせてAlt + Enterキーを押下し、JavaEE6でなんちゃらかんちゃらって書かれてるものを選択する。

・「Customer」クラスを作成する。

import javax.validation.constraints.NotBlank;
    import javax.validation.constraints.PositiveOrZero;

    public class Customer {

        private String salutation;

        @NotBlank(message = "first name must not be empty")
        private String firstName;
        private String middleName;

        @NotBlank(message = "last name must not be empty")
        private String lastName;

        @PositiveOrZero
        private Integer age;

        public Customer() {
        }

        public Customer(String salutation, String firstName, String middleName, String lastName, Integer age) {
            this.salutation = salutation;
            this.firstName = firstName;
            this.middleName = middleName;
            this.lastName = lastName;
            this.age = age;
        }

        public String getSalutation() {
            return salutation;
        }

        public void setSalutation(String salutation) {
            this.salutation = salutation;
        }

        public String getFirstName() {
            return firstName;
        }

        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }

        public String getMiddleName() {
            return middleName;
        }

        public void setMiddleName(String middleName) {
            this.middleName = middleName;
        }

        public String getLastName() {
            return lastName;
        }

        public void setLastName(String lastName) {
            this.lastName = lastName;
        }

        public Integer getAge() {
            return age;
        }

        public void setAge(Integer age) {
            this.age = age;
        }

    }

・CustomerContainerクラス追加

package org.j1hol;

import java.util.List;
import javax.validation.Valid;

public class CustomerContainer {

    private List<@Valid Customer> customerList;

    public List<Customer> getCustomerList() {
        return customerList;
    }

    public void setCustomerList(List<Customer> customerList) {
        this.customerList = customerList;
    }

}

・プロジェクトを右クリックし「Run」

ブラウザが開き「Hello World」が表示される。(htmlはNetBeansが自動生成)

確認するとちゃんと反映されてる。
http://localhost:8080/hol-jsonb-beanval/webresources/jsonbbea nval

[{"age":20,"firstName":"Trisha","lastName":"Gee","salutation":"Mrs"},{"age":30,"firstName":"James","lastName":"Gosling","salutation":"Dr"},{"age":-10,"firstName":"Don","lastName":"Smith","salutation":"Mr"}]
  • あとがき
    なんか本題からずれてる気もするけど、ちゃんとGlassfish5.1.0-RC1でも動くことが確認できた。
    管理コンソールとか目新しいこともないので、いまはPayaraのままでいい気がするかなーって気がしてます。 ハンズオンの資料にSecurity APIもあって、まだ試してないのでそっちもやってみようかな

関連記事

この記事へのコメント

まだコメントはありません
2
JakartaEEやらの技術ブログ
2
このエントリーをはてなブックマークに追加