$30 off During Our Annual Pro Sale. View Details »

Challenge for GlassFish Buildpack

Challenge for GlassFish Buildpack

Cloud Foundry Tokyo Meetup 2016

Kenji Kazumura

May 23, 2022
Tweet

More Decks by Kenji Kazumura

Other Decks in Programming

Transcript

  1. 2016.6.1
    Kenji Kazumura
    Fujitsu Limited
    Challenge for
    GlassFish Buildpack
    Copyright 2016 FUJITSU LIMITED
    Cloud Foundry Tokyo Meetup #2

    View Slide

  2. About me
    Copyright 2016 FUJITSU LIMITED
    Java VM developer
    Working for Fujitsu
    Interstage Application Server
    JSR 204 Expert Group
    Board Member of Executive Committee
    Author of On-line Java Learning Courses
    https://directshop.fom.fujitsu.com/shop/commodity_param/ctc/el_middleit/shc/0/cmc/ASP03737
    JCP (Java Community Process)
    https://directshop.fom.fujitsu.com/shop/commodity_param/ctc/el_middleit/shc/0/cmc/ASP03738
    1

    View Slide

  3. Agenda
    Copyright 2016 FUJITSU LIMITED
    Motivation
    GlassFish Buildpack
    RDS
    Context Root
    Summary
    Logging
    2

    View Slide

  4. Motivation
    Copyright 2016 FUJITSU LIMITED
    Why we need GlassFish ?
    Based on Tomcat
    Java Buildpack already exists
    Standardized framework on which
    WebSocket, JAX-RS, JPA, etc is available
    Play and Spring also available
    Enterprise system like this
    Help migrating from on-premise to cloud
    3

    View Slide

  5. GlassFish Buildpack
    Copyright 2016 FUJITSU LIMITED
    Based on GlassFish 4.1 WebProfile
    Servlet 3.1
    JavaServer Pages(JSP) 2.3
    Unified Expression Language(EL) 3
    Debugging Support for Other Languages (JSR-45) 1
    JavaServer Pages Standard Tag Library(JSTL) 1.2
    JavaServer Faces(JSF) 2.2
    Java API for RESTful Web Services(JAX-RS) 2
    Java API for WebSocket(WebSocket) 1
    Java API for JSON Processing(JSON-P) 1
    Common Annotations for the Java Platform (JSR-250) 1.2
    Enterprise JavaBeans(EJB) 3.2 Lite
    Java Transaction API(JTA) 1.2
    Java Persistence API(JPA) 2.1
    Bean Validation 1.1
    Managed Beans 1
    Interceptors 1.2
    Contexts and Dependency Injection for the Java EE Platform 1.1
    Dependency Injection for Java
    APIs
    4

    View Slide

  6. Challenge
    Copyright 2016 FUJITSU LIMITED
    20 engineers
    5 months
    No one had experience to use
    Cloud Foundry before
    All are application server developers
    Start project without Cloud Foundry
    5

    View Slide

  7. Context Root
    Copyright 2016 FUJITSU LIMITED
    Context root is different between
    GlassFish and Cloud Foundry standard
    You can use old way by setting
    FJBP_CONTEXT_ROOT to ‘app’
    URL
    Cloud Foundry app.paas.fujitsu.com
    GlassFish app.paas.fujitsu.com/app
    ‘app’ is a name of your application
    Change GlassFish default URL to
    the same as Cloud Foundry standard
    6

    View Slide

  8. Logging
    Copyright 2016 FUJITSU LIMITED
    Local storage should not be used
    on Cloud Foundry
    GlassFish supposes local storage
    http access logs
    logs of GlassFish itself
    Change all output to standard out
    7

    View Slide

  9. Relational Database Service
    Copyright 2016 FUJITSU LIMITED
    On-Premise
    Tightly coupled with JDBC
    Describe JDBC information at config file
    Cloud
    Should couple loosely with JDBC
    How do you do that ?
    Usually get info from environment vars
    8

    View Slide

  10. Example1
    Copyright 2016 FUJITSU LIMITED
    public class DBAccess extends HttpServlet {
    Connection getConnection() {
    String env = System.getenv("VCAP_SERVICES");
    if ( env != null ) {
    try {
    JsonReader reader = Json.createReader(new StringReader(env));
    JsonObject servicesObject = jsonReader.readObject();
    reader.close();
    JsonObject rdsObject = servicesObject.getJsonObject("fujitsurds");
    String uri = rdsObject.getString("uri");
    Connection connection = DriverManager.getConnection(uri);
    return connection;
    } catch ( Exception e ) {
    return null;
    ……
    9

    View Slide

  11. Example2
    Copyright 2016 FUJITSU LIMITED
    public class DBAccess extends HttpServlet {
    @Resource (name = “jdbc/porstresqlService”)
    private DataSource ds;

    GlassFish Buildpack provides
    auto binding feature
    ‘postgresqlService’ is the name of the service bound to your app
    i.e.
    % cf bind-service myApp postgresqlService
    10

    View Slide

  12. Summary
    Copyright 2016 FUJITSU LIMITED
    Give it a try !
    Any feedbacks are appreciated
    11

    View Slide

  13. Q/A
    Copyright 2016 FUJITSU LIMITED
    12

    View Slide

  14. Copyright 2016 FUJITSU LIMITED
    Trademarks of other companies are used in this documentation only to
    identify particular products or systems.
    Oracle and Java are registered trademarks of Oracle and/or its affiliates.
    Other company and product names in this documentation are trademarks or
    registered trademarks of their respective owners.
    13

    View Slide

  15. Copyright 2010 FUJITSU LIMITED

    View Slide