SlideShare una empresa de Scribd logo
1 de 38
Descargar para leer sin conexión
1   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
GlassFish REST Administration Back End
Arun Gupta, Java EE & GlassFish Guy
blogs.oracle.com/arungupta, @arungupta
 2   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
The following is intended to outline our general product direction.
    It is intended for information purposes only, and may not be
    incorporated into any contract. It is not a commitment to deliver
    any material, code, or functionality, and should not be relied upon
    in making purchasing decisions. The development, release, and
    timing of any features or functionality described for Oracle s
    products remains at the sole discretion of Oracle.




3   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
                2011,
Program Agenda

    •  Background
          –  JAX-RS
          –  GlassFish
    •  Implementation details
    •  Tips and Tricks
    •  Clients
    •  Future plans
    •  Q & A
4   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Program Agenda

    •  Background
          –  JAX-RS
          –  GlassFish
    •  Implementation details
    •  Tips and Tricks
    •  Clients
    •  Future plans
    •  Q & A
5   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Background
    JAX-RS
    •  JAX-RS
          –  Standard annotation-driven API that aims to help developers build
             RESTful Web services in Java
          –  JSR 311: JAX-RS 1.x released Nov 2009
    •  Jersey
          –  Reference implementation of JAX-RS
          –  Ships with GlassFish




6   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Background
    Sample JAX-RS resource
    1     @Path("myresource")

    2     @Produces({"application/html, application/xml, application/json"})

    3     public class MyResource {

    4

    5           @GET    /* curl -X GET http://example.com/myapp/myresource */

    6           public MyResource getMyResource() { . . . }

    7

    8           @GET @Path("{Name}/") /* curl -X GET http://example.com/myapp/myresource/someChildName */

    9           public ChildResource getMyChildResource(@PathParam("Name") String name) { . . .}

    10

    11          @POST /* curl -X POST -d "attr1=value1:attr2=value2..." http://example.com/myapp/myresource */

    12          public Response creatResource(HashMap<String, String> data) { . . . }

    13

    14          @DELETE /* curl -X DELETE http://.../myapp/myresource */

    15          public Response deleteResource() { . . . }

    16    }

    "
    "


7    Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Program Agenda

    •  Background
          –  JAX-RS
       •  GlassFish
    •  Implementation details
    •  Tips and Tricks
    •  Clients
    •  Future plans
    •  Q & A
8   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Background
    GlassFish
          –  Java EE reference implementation
          –  Highly modular
                   •  Leverages OSGI
                   •  Every container/service is a set of OSGI modules
                   •  Multiple distributions
                       –  Java EE Web Profile
                       –  Java EE Full Profile
                   •  Possible to add modules to existing distribution




9   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Background
     GlassFish Modular Architecture
           Full Profile Distribution
              MDB Container                             JMS Service               EJB Container              CMP             Java Mail         ACC



          Web Profile Distribution
                                                  EJB Lite                     Java            Transaction         Naming
            Web Container                                                                                                      Deployment   JDBC Service
                                                  Container                 Persistence          Service           Service


          GlassFish Nucleus
                   Config                                   CLI                                           Monitoing           REST           Security
                                                                                     Grizzly
                 Framework                               Framework                                       Framework           Backend         Service


                                                                                                  HK2
                                                                                          OSGI Runtime
                                                                                               Java SE

10   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Background
     GlassFish Configuration
     •  domain.xml file
           –  Persistence storage for configuration
           –  Dynamic structure and content.
                    •  GlassFish is highly modular
                    •  Defined at run time depending on modules installed




11   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Background
     GlassFish domain.xml snippet
     1 <domain log-root="${com.sun.aas.instanceRoot}/logs" ... >

     2   <applications>...</applications>

     3   <resources>

     4     <jdbc-connection-pool datasource-classname="..." res-type="javax.sql.XADataSource" name="__TimerPool">        

     5       <property name="connectionAttributes" value=";create=true"></property>

     6       ...

     7     </jdbc-connection-pool>

     8     <jdbc-connection-pool datasource-classname="..." res-type="javax.sql.XADataSource" name="MyPool">      

     9       <property name="MyProperty" value="MyValue"></property>

     10    </jdbc-connection-pool>

     11      ...

     12   <jdbc-resource pool-name="TimerPool" jndi-name="jdbc/__TimerPool" object-type="system-admin"></jdbc-resource>

     13      ...

     14 </resources>

     15 <configs>

     16    <config name="server-config">

     17      <http-service> ... </http-service>

     18      <ejb-container session-store="${com.sun.aas.instanceRoot}/session-store">

     19        <ejb-timer-service>...</ejb-timer-service>

     20      </ejb-container>

     21       ...

     22    </config>

     23      ...

     24 </configs>

     25 ...

     26 </domain>"


12    Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Program Agenda

     •  Background
           –  JAX-RS
           –  GlassFish
     •  Implementation details
     •  Tips and Tricks
     •  Clients
     •  Future plans
     •  Q & A
13   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Implementation Details
     GlassFish Config Beans
     •  Annotated pojos
     •  Each module uses config beans to define its
        configuration




14   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Implementation Details
     Example Config Bean
     @Configured"
     public interface JdbcConnectionPool extends ConfigBeanProxy {"
        @Attribute(key=true) "
        String getName(); "
        void setName(String value);"
        "
        @Attribute "
        String getDatasourceClassname();"
        ..."
        @Element "
        List<Property> getProperty();"
        ..."
     }"




15   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Implementation Details
     Example Config Bean
     @Configured"
     public interface JdbcConnectionPool extends ConfigBeanProxy {"
        @Attribute(key=true) "
        String getName(); "
        @Attribute "
        String getDatasourceClassname();"
        ..."
        @Element "
        List<Property> getProperty();"
        ..."
     }"
     Corresponding snippet from domain.xml
     <jdbc-connection-pool name=" ... " datasource-classname=" ... " >"
           <property name="..." value="..."/ >   "
           <property name="..." value="..."/ >   "
     </jdbc-connection-pool>"
     "




16    Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Implementation Details
     GlassFish Command Line Interface (CLI)
     •  The gateway to manipulate GlassFish configuration
           –  Transaction
           –  Replication
     •  Examples
           –  Create a jdbc connection pool
                    $       asadmin create-jdbc-connection-pool 

                                     --datasourceclassname oracle.jdbc.pool.OracleDataSource 

                                     --property User=scott:Password=tiger:URL=jdbc:oracle:thin ..."
                                                   MyOraclePool"

           –  Delete a jdbc connection pool
                    $       asadmin delete-jdbc-connection-pool MyOraclePool"



17   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Implementation Details
     GlassFish Command Line Interface (CLI)
     1     @org.glassfish.api.admin.ExecuteOn(RuntimeType.ALL)

     2     @Service(name="create-jdbc-connection-pool")

     3      ...

     4     public class CreateJdbcConnectionPool implements AdminCommand { 

     5       @Param(name="jdbc_connection_pool_id", alias = "name", primary=true)

     6       String jdbc_connection_pool_id;

     7

     8           @Param(name = "datasourceClassname",                        optional=true)

     9           String datasourceclassname;

     10

     11          @Param(name="property", optional=true, separator=':')

     12          Properties properties;

     13

     14          public void execute(AdminCommandContext context) {

     15             create_internal_data_structures();

     16             persist_into_configuration();

     17          }

     18    }

     "

18    Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Implementation Details
     GlassFish admin REST backend
     •  Management
                                                                            GlassFish Server Instance
           –  Access to configuration                                              REST Backend

           –  GET to access and navigate                                                    POST     DELETE


              configuration tree                                                GET        GlassFish CLI


           –  POST/DELETE to mutate configuration                                     Config Beans

                    •  Wraps CLI to mutate configuration
                       objects                                                        domain.xml




19   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Implementation Details
     GlassFish admin REST backend
     •  Monitoring                                                          GlassFish Server Instance
           –  Data available as a tree in                                           REST Backend

              running GlassFish VM                                                   GET

           –  GET to access and navigate                                    Monitoring Tree

              the tree




20   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Implementation Details
     GlassFish admin REST backend
     •  Demo
           –  Lets see REST backend in action




21   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Implementation Details
     GlassFish Config Bean as REST resource
     1   public ListJdbcConnectionPoolResource {

     2

     3   @Contextprotected ResourceContext resourceContext;

     4

     5   @GET 

     6   public Response get() {

     7       return Response.ok().entity(get_list_of_jdbc_resourcecs()).build();

     8   }

     9

     10 @POST

     11     public Response createResource(HashMap<String, String> data) {

     12       RestActionReporter actionReport = ResourceUtil.runCommand(getPostCommand(), data, ...);

     13       return Response.ok(arr).build();

     14 }

     15

     16 @Path("{Name}/") 

     17 public JdbcConnectionPoolResource getJdbcConnectionPoolResource(@PathParam("Name") String id)
     {

     18      JdbcConnectionPoolResource resource =        

     19            resourceContext.getResource(JdbcConnectionPoolResource.class);

     20      resource.setBeanByKey(entity, id);

     21      return resource;

     22 }

     23 }"
22    Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Implementation Details
     GlassFish Config Bean as REST resource
     1   public class JDBCConnectionPoolResource {"
     2            ""
     3    @GET"
     4    public Response getEntity() {"
     5        return Response.ok(get_content_of_current_config_bean() )"
     6    } "
     7"
     8    @POST"
     9    public Response updateEntity(HashMap<String, String> data) {"
     10      RestActionReporter ar = Util.applyChanges(data, uriInfo, habitat); // calls asadmin set"
     11      return Response.ok(

     12              ResourceUtil.getActionReportResult(ar, successMessage, requestHeaders, uriInfo)).build();"
     13   }"
     14"
     15   @DELETE"
     16   public Response delete(HashMap<String, String> data) {"
     17         RestActionReporter actionReport = runCommand(getDeleteCommand(), data);"
     18   }"
     19"
     20 }"


     "
23
     "Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Implementation Details
     Code Generation
     •  Generate REST resources dynamically
           –  Visit each bean of GlassFish config model to drive generation
                    •  Bytecode
                        –  Uses ASM
                    •  Text – For development time debugging
                    •  Report – Generating usage report
           –  Abstract out most of the logic in handwritten base class
           –  REST enable newly added module transparently



24   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Implementation Details
     Bootstrapping
     •  Initialized lazily
           –  No startup penalty
     •  No dependency on servlet container
           –  Using Grizzly adapter
                    Set<Class> classes = 

                       <All ASM generated classes> + <All providers> + <static classes>"
                    ResourceConfig rc = new DefaultResourceConfig(classes); "
                    httpHandler = ContainerFactory.createContainer(HttpHandler.class, rc);"




25   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Program Agenda

     •  Background
           –  JAX-RS
           –  GlassFish
     •  Implementation details
     •  Tips and Tricks
     •  Clients
     •  Future plans
     •  Q & A
26   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Tips And Tricks
     Enable Efficient Programmatic and Manual Consumption
     •  GlassFish REST interface is used by
           –  Users of GlassFish.
                    •  Prefer HTML
           –  GlassFish Admin GUI and other programmatic consumption
                    •  Prefer JSON/XML
     •  @Provider for various formats
           –  ActionReport[Html|Json|Xml]Provider
     •  com.sun.jersey….ResourceConfig#MediaTypeMapping
           –  Add mediatype mapping for “.xml” “.json” and “.html” for content
              negotiation
27   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Tips And Tricks
     Annotate domain model
     •  Enables modularity
           –  Associate commands that manipulate a config bean
                    @Configured "
                    @RestRedirects({"
                      @RestRedirect(opType = RestRedirect.OpType.POST, commandName = "create-jdbc-resource"),"
                      @RestRedirect(opType = RestRedirect.OpType.DELETE, commandName = "delete-jdbc-resource")"
                    })"
                "public interface JdbcResource extends ConfigBeanProxy,     Resource, .. { . . . }"

           –  Place a command at certain position in tree
                  @Service(name = "copy-config")"
                 @RestEndpoints({"
                     @RestEndpoint(configBean=Configs.class, opType=OpType.POST, path="copy-config",..)"
                   })"
                 public final class CopyConfigCommand ...{ ... }

                 "




28   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Tips And Tricks
     Security
     •  REST is stateless
           –  Authentication info travels with every request
                    •  GlassFish Admin GUI console (Client) needs to cache credentials
                    •  Security Risk if it caches userId + passWord
     •  Authentication tokens
           –  Self expiring
           –  Admin GUI requests a token with user supplied id and password
           –  Subsequent request only need to use the token


29   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Tips and Tricks                                                                  GET insatnce1                   GET insatnce2
                                                                                      data                            data
     Proxy-ing
     •  GlassFish Monitoring                                                                             DAS
                                                                                                      REST Backend

           –  Data collected on each                                           GET                                                     GET

              instance of cluster                                                                Monitoring Tree



     •  Proxy instance data
        through DAS
                                                                                                                        Instance2
           –  DAS proxies request to                                           Instance1
                                                                              REST Backend
                                                                                                                       REST Backend

              target instance
                                                                                                                     Monitoring Tree
           –  Provides transparency                                         Monitoring Tree


           –  Handles security

30   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Program Agenda

     •  Background
           –  JAX-RS
           –  GlassFish
     •  Implementation details
     •  Tips and Tricks
     •  Clients
     •  Future plans
     •  Q & A
31   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Clients Of GlassFish REST backend

     •  GlassFish Admin GUI console
     •  GlassFish NetBeans plugin
     •  GlassFish Eclipse plugin
     •  GlassFish.next
     •  LightFish.adambien.com
     •  End Users
           –  Browser


32   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Program Agenda

     •  Background
           –  JAX-RS
           –  GlassFish
     •  Implementation details
     •  Tips and Tricks
     •  Clients
     •  Future plans
     •  Q & A
33   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Future Plans

     •  Provide client side library with various language bindings
     •  Backend of Console for GlassFish.next
     •  Leverage planned work in Jersey to define REST
        resources without generating classes
     •  Improve HTML interface
     •  Internal clean up



34   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Resources

     •  GlassFish
           –  home page - http://glassfish.java.net/
           –  REST backend source code -
              https://svn.java.net/svn/glassfish~svn/trunk/main/nucleus/admin/rest/rest-service/

     •  JAX-RS
           –  JAX-RS 1.x - http://jcp.org/en/jsr/detail?id=311
           –  JAX-RS 2.0 - http://jcp.org/en/jsr/detail?id=339
           –  Jersey – http://jersey.java.net




35   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Q&A


36   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Latin America 2011
                                                                            December 6–8, 2011

                                                                            Tokyo 2012
                                                                            April 4–6, 2012




37   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
38   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Más contenido relacionado

La actualidad más candente

JAX-RS 2.0: What’s New in JSR 339 ?
JAX-RS 2.0: What’s New in JSR 339 ?JAX-RS 2.0: What’s New in JSR 339 ?
JAX-RS 2.0: What’s New in JSR 339 ?Arun Gupta
 
GlassFish REST Administration Backend
GlassFish REST Administration BackendGlassFish REST Administration Backend
GlassFish REST Administration BackendArun Gupta
 
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX LondonJAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX LondonArun Gupta
 
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012Arun Gupta
 
Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7Arun Gupta
 
Java Summit Chennai: JAX-RS 2.0
Java Summit Chennai: JAX-RS 2.0Java Summit Chennai: JAX-RS 2.0
Java Summit Chennai: JAX-RS 2.0Arun Gupta
 
JAX-RS 2.0: RESTful Web Services
JAX-RS 2.0: RESTful Web ServicesJAX-RS 2.0: RESTful Web Services
JAX-RS 2.0: RESTful Web ServicesArun Gupta
 
Jfokus 2012: PaaSing a Java EE Application
Jfokus 2012: PaaSing a Java EE ApplicationJfokus 2012: PaaSing a Java EE Application
Jfokus 2012: PaaSing a Java EE ApplicationArun Gupta
 
GIDS 2012: PaaSing a Java EE Application
GIDS 2012: PaaSing a Java EE ApplicationGIDS 2012: PaaSing a Java EE Application
GIDS 2012: PaaSing a Java EE ApplicationArun Gupta
 
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012Arun Gupta
 
GIDS 2012: Java Message Service 2.0
GIDS 2012: Java Message Service 2.0GIDS 2012: Java Message Service 2.0
GIDS 2012: Java Message Service 2.0Arun Gupta
 
TDC 2011: OSGi-enabled Java EE Application
TDC 2011: OSGi-enabled Java EE ApplicationTDC 2011: OSGi-enabled Java EE Application
TDC 2011: OSGi-enabled Java EE ApplicationArun Gupta
 
The Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the CloudThe Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the CloudArun Gupta
 
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...Arun Gupta
 
Running your Java EE 6 applications in the Cloud
Running your Java EE 6 applications in the CloudRunning your Java EE 6 applications in the Cloud
Running your Java EE 6 applications in the CloudArun Gupta
 
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the CloudTDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the CloudArun Gupta
 
Jfokus 2012 : The Java EE 7 Platform: Developing for the Cloud
Jfokus 2012 : The Java EE 7 Platform: Developing for the CloudJfokus 2012 : The Java EE 7 Platform: Developing for the Cloud
Jfokus 2012 : The Java EE 7 Platform: Developing for the CloudArun Gupta
 
5050 dev nation
5050 dev nation5050 dev nation
5050 dev nationArun Gupta
 
GlassFish & Java EE Business Update @ CEJUG
GlassFish & Java EE Business Update @ CEJUGGlassFish & Java EE Business Update @ CEJUG
GlassFish & Java EE Business Update @ CEJUGArun Gupta
 
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012Arun Gupta
 

La actualidad más candente (20)

JAX-RS 2.0: What’s New in JSR 339 ?
JAX-RS 2.0: What’s New in JSR 339 ?JAX-RS 2.0: What’s New in JSR 339 ?
JAX-RS 2.0: What’s New in JSR 339 ?
 
GlassFish REST Administration Backend
GlassFish REST Administration BackendGlassFish REST Administration Backend
GlassFish REST Administration Backend
 
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX LondonJAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
 
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
 
Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7
 
Java Summit Chennai: JAX-RS 2.0
Java Summit Chennai: JAX-RS 2.0Java Summit Chennai: JAX-RS 2.0
Java Summit Chennai: JAX-RS 2.0
 
JAX-RS 2.0: RESTful Web Services
JAX-RS 2.0: RESTful Web ServicesJAX-RS 2.0: RESTful Web Services
JAX-RS 2.0: RESTful Web Services
 
Jfokus 2012: PaaSing a Java EE Application
Jfokus 2012: PaaSing a Java EE ApplicationJfokus 2012: PaaSing a Java EE Application
Jfokus 2012: PaaSing a Java EE Application
 
GIDS 2012: PaaSing a Java EE Application
GIDS 2012: PaaSing a Java EE ApplicationGIDS 2012: PaaSing a Java EE Application
GIDS 2012: PaaSing a Java EE Application
 
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
 
GIDS 2012: Java Message Service 2.0
GIDS 2012: Java Message Service 2.0GIDS 2012: Java Message Service 2.0
GIDS 2012: Java Message Service 2.0
 
TDC 2011: OSGi-enabled Java EE Application
TDC 2011: OSGi-enabled Java EE ApplicationTDC 2011: OSGi-enabled Java EE Application
TDC 2011: OSGi-enabled Java EE Application
 
The Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the CloudThe Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the Cloud
 
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...
 
Running your Java EE 6 applications in the Cloud
Running your Java EE 6 applications in the CloudRunning your Java EE 6 applications in the Cloud
Running your Java EE 6 applications in the Cloud
 
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the CloudTDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
 
Jfokus 2012 : The Java EE 7 Platform: Developing for the Cloud
Jfokus 2012 : The Java EE 7 Platform: Developing for the CloudJfokus 2012 : The Java EE 7 Platform: Developing for the Cloud
Jfokus 2012 : The Java EE 7 Platform: Developing for the Cloud
 
5050 dev nation
5050 dev nation5050 dev nation
5050 dev nation
 
GlassFish & Java EE Business Update @ CEJUG
GlassFish & Java EE Business Update @ CEJUGGlassFish & Java EE Business Update @ CEJUG
GlassFish & Java EE Business Update @ CEJUG
 
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
 

Similar a GlassFish REST Administration Backend at JavaOne India 2012

Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7Max Andersen
 
Spring 3.1: a Walking Tour
Spring 3.1: a Walking TourSpring 3.1: a Walking Tour
Spring 3.1: a Walking TourJoshua Long
 
Java EE7
Java EE7Java EE7
Java EE7Jay Lee
 
20151010 my sq-landjavav2a
20151010 my sq-landjavav2a20151010 my sq-landjavav2a
20151010 my sq-landjavav2aIvan Ma
 
Java EE 6 & GlassFish = Less Code + More Power @ DevIgnition
Java EE 6 & GlassFish = Less Code + More Power @ DevIgnitionJava EE 6 & GlassFish = Less Code + More Power @ DevIgnition
Java EE 6 & GlassFish = Less Code + More Power @ DevIgnitionArun Gupta
 
Java EE 6 = Less Code + More Power
Java EE 6 = Less Code + More PowerJava EE 6 = Less Code + More Power
Java EE 6 = Less Code + More PowerArun Gupta
 
Java EE 6 & GlassFish = Less Code + More Power at CEJUG
Java EE 6 & GlassFish = Less Code + More Power at CEJUGJava EE 6 & GlassFish = Less Code + More Power at CEJUG
Java EE 6 & GlassFish = Less Code + More Power at CEJUGArun Gupta
 
Java EE 7 in practise - OTN Hyderabad 2014
Java EE 7 in practise - OTN Hyderabad 2014Java EE 7 in practise - OTN Hyderabad 2014
Java EE 7 in practise - OTN Hyderabad 2014Jagadish Prasath
 
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...jaxLondonConference
 
Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5Arun Gupta
 
GlassFish BOF
GlassFish BOFGlassFish BOF
GlassFish BOFglassfish
 
The Java EE 7 Platform: Productivity++ & Embracing HTML5
The Java EE 7 Platform: Productivity++ & Embracing HTML5The Java EE 7 Platform: Productivity++ & Embracing HTML5
The Java EE 7 Platform: Productivity++ & Embracing HTML5Arun Gupta
 
JAX-RS 2.0: New and Noteworthy in RESTful Web Services API - Arun Gupta
JAX-RS 2.0: New and Noteworthy in RESTful Web Services API - Arun GuptaJAX-RS 2.0: New and Noteworthy in RESTful Web Services API - Arun Gupta
JAX-RS 2.0: New and Noteworthy in RESTful Web Services API - Arun GuptaJAX London
 
CQ5 QueryBuilder - .adaptTo(Berlin) 2011
CQ5 QueryBuilder - .adaptTo(Berlin) 2011CQ5 QueryBuilder - .adaptTo(Berlin) 2011
CQ5 QueryBuilder - .adaptTo(Berlin) 2011Alexander Klimetschek
 
Java EE7 Demystified
Java EE7 DemystifiedJava EE7 Demystified
Java EE7 DemystifiedAnkara JUG
 
Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6Arun Gupta
 
Diagnosing Your Application on the JVM
Diagnosing Your Application on the JVMDiagnosing Your Application on the JVM
Diagnosing Your Application on the JVMStaffan Larsen
 
Java EE 6 workshop at Dallas Tech Fest 2011
Java EE 6 workshop at Dallas Tech Fest 2011Java EE 6 workshop at Dallas Tech Fest 2011
Java EE 6 workshop at Dallas Tech Fest 2011Arun Gupta
 

Similar a GlassFish REST Administration Backend at JavaOne India 2012 (20)

Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
 
Java ee7 1hour
Java ee7 1hourJava ee7 1hour
Java ee7 1hour
 
Spring 3.1: a Walking Tour
Spring 3.1: a Walking TourSpring 3.1: a Walking Tour
Spring 3.1: a Walking Tour
 
Java EE7
Java EE7Java EE7
Java EE7
 
20151010 my sq-landjavav2a
20151010 my sq-landjavav2a20151010 my sq-landjavav2a
20151010 my sq-landjavav2a
 
Java EE 6 & GlassFish = Less Code + More Power @ DevIgnition
Java EE 6 & GlassFish = Less Code + More Power @ DevIgnitionJava EE 6 & GlassFish = Less Code + More Power @ DevIgnition
Java EE 6 & GlassFish = Less Code + More Power @ DevIgnition
 
Java EE 6 = Less Code + More Power
Java EE 6 = Less Code + More PowerJava EE 6 = Less Code + More Power
Java EE 6 = Less Code + More Power
 
Java EE 6 & GlassFish = Less Code + More Power at CEJUG
Java EE 6 & GlassFish = Less Code + More Power at CEJUGJava EE 6 & GlassFish = Less Code + More Power at CEJUG
Java EE 6 & GlassFish = Less Code + More Power at CEJUG
 
Java EE 7 in practise - OTN Hyderabad 2014
Java EE 7 in practise - OTN Hyderabad 2014Java EE 7 in practise - OTN Hyderabad 2014
Java EE 7 in practise - OTN Hyderabad 2014
 
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
 
Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5
 
GlassFish BOF
GlassFish BOFGlassFish BOF
GlassFish BOF
 
The Java EE 7 Platform: Productivity++ & Embracing HTML5
The Java EE 7 Platform: Productivity++ & Embracing HTML5The Java EE 7 Platform: Productivity++ & Embracing HTML5
The Java EE 7 Platform: Productivity++ & Embracing HTML5
 
Hibernate in Nutshell
Hibernate in NutshellHibernate in Nutshell
Hibernate in Nutshell
 
JAX-RS 2.0: New and Noteworthy in RESTful Web Services API - Arun Gupta
JAX-RS 2.0: New and Noteworthy in RESTful Web Services API - Arun GuptaJAX-RS 2.0: New and Noteworthy in RESTful Web Services API - Arun Gupta
JAX-RS 2.0: New and Noteworthy in RESTful Web Services API - Arun Gupta
 
CQ5 QueryBuilder - .adaptTo(Berlin) 2011
CQ5 QueryBuilder - .adaptTo(Berlin) 2011CQ5 QueryBuilder - .adaptTo(Berlin) 2011
CQ5 QueryBuilder - .adaptTo(Berlin) 2011
 
Java EE7 Demystified
Java EE7 DemystifiedJava EE7 Demystified
Java EE7 Demystified
 
Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6
 
Diagnosing Your Application on the JVM
Diagnosing Your Application on the JVMDiagnosing Your Application on the JVM
Diagnosing Your Application on the JVM
 
Java EE 6 workshop at Dallas Tech Fest 2011
Java EE 6 workshop at Dallas Tech Fest 2011Java EE 6 workshop at Dallas Tech Fest 2011
Java EE 6 workshop at Dallas Tech Fest 2011
 

Más de Arun Gupta

5 Skills To Force Multiply Technical Talents.pdf
5 Skills To Force Multiply Technical Talents.pdf5 Skills To Force Multiply Technical Talents.pdf
5 Skills To Force Multiply Technical Talents.pdfArun Gupta
 
Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubernetes - AI Conclave 2019Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubernetes - AI Conclave 2019Arun Gupta
 
Machine Learning using Kubeflow and Kubernetes
Machine Learning using Kubeflow and KubernetesMachine Learning using Kubeflow and Kubernetes
Machine Learning using Kubeflow and KubernetesArun Gupta
 
Secure and Fast microVM for Serverless Computing using Firecracker
Secure and Fast microVM for Serverless Computing using FirecrackerSecure and Fast microVM for Serverless Computing using Firecracker
Secure and Fast microVM for Serverless Computing using FirecrackerArun Gupta
 
Building Java in the Open - j.Day at OSCON 2019
Building Java in the Open - j.Day at OSCON 2019Building Java in the Open - j.Day at OSCON 2019
Building Java in the Open - j.Day at OSCON 2019Arun Gupta
 
Why Amazon Cares about Open Source
Why Amazon Cares about Open SourceWhy Amazon Cares about Open Source
Why Amazon Cares about Open SourceArun Gupta
 
Machine learning using Kubernetes
Machine learning using KubernetesMachine learning using Kubernetes
Machine learning using KubernetesArun Gupta
 
Building Cloud Native Applications
Building Cloud Native ApplicationsBuilding Cloud Native Applications
Building Cloud Native ApplicationsArun Gupta
 
Chaos Engineering with Kubernetes
Chaos Engineering with KubernetesChaos Engineering with Kubernetes
Chaos Engineering with KubernetesArun Gupta
 
How to be a mentor to bring more girls to STEAM
How to be a mentor to bring more girls to STEAMHow to be a mentor to bring more girls to STEAM
How to be a mentor to bring more girls to STEAMArun Gupta
 
Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018Arun Gupta
 
The Serverless Tidal Wave - SwampUP 2018 Keynote
The Serverless Tidal Wave - SwampUP 2018 KeynoteThe Serverless Tidal Wave - SwampUP 2018 Keynote
The Serverless Tidal Wave - SwampUP 2018 KeynoteArun Gupta
 
Introduction to Amazon EKS - KubeCon 2018
Introduction to Amazon EKS - KubeCon 2018Introduction to Amazon EKS - KubeCon 2018
Introduction to Amazon EKS - KubeCon 2018Arun Gupta
 
Mastering Kubernetes on AWS - Tel Aviv Summit
Mastering Kubernetes on AWS - Tel Aviv SummitMastering Kubernetes on AWS - Tel Aviv Summit
Mastering Kubernetes on AWS - Tel Aviv SummitArun Gupta
 
Top 10 Technology Trends Changing Developer's Landscape
Top 10 Technology Trends Changing Developer's LandscapeTop 10 Technology Trends Changing Developer's Landscape
Top 10 Technology Trends Changing Developer's LandscapeArun Gupta
 
Container Landscape in 2017
Container Landscape in 2017Container Landscape in 2017
Container Landscape in 2017Arun Gupta
 
Java EE and NoSQL using JBoss EAP 7 and OpenShift
Java EE and NoSQL using JBoss EAP 7 and OpenShiftJava EE and NoSQL using JBoss EAP 7 and OpenShift
Java EE and NoSQL using JBoss EAP 7 and OpenShiftArun Gupta
 
Docker, Kubernetes, and Mesos recipes for Java developers
Docker, Kubernetes, and Mesos recipes for Java developersDocker, Kubernetes, and Mesos recipes for Java developers
Docker, Kubernetes, and Mesos recipes for Java developersArun Gupta
 
Thanks Managers!
Thanks Managers!Thanks Managers!
Thanks Managers!Arun Gupta
 
Migrate your traditional VM-based Clusters to Containers
Migrate your traditional VM-based Clusters to ContainersMigrate your traditional VM-based Clusters to Containers
Migrate your traditional VM-based Clusters to ContainersArun Gupta
 

Más de Arun Gupta (20)

5 Skills To Force Multiply Technical Talents.pdf
5 Skills To Force Multiply Technical Talents.pdf5 Skills To Force Multiply Technical Talents.pdf
5 Skills To Force Multiply Technical Talents.pdf
 
Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubernetes - AI Conclave 2019Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubernetes - AI Conclave 2019
 
Machine Learning using Kubeflow and Kubernetes
Machine Learning using Kubeflow and KubernetesMachine Learning using Kubeflow and Kubernetes
Machine Learning using Kubeflow and Kubernetes
 
Secure and Fast microVM for Serverless Computing using Firecracker
Secure and Fast microVM for Serverless Computing using FirecrackerSecure and Fast microVM for Serverless Computing using Firecracker
Secure and Fast microVM for Serverless Computing using Firecracker
 
Building Java in the Open - j.Day at OSCON 2019
Building Java in the Open - j.Day at OSCON 2019Building Java in the Open - j.Day at OSCON 2019
Building Java in the Open - j.Day at OSCON 2019
 
Why Amazon Cares about Open Source
Why Amazon Cares about Open SourceWhy Amazon Cares about Open Source
Why Amazon Cares about Open Source
 
Machine learning using Kubernetes
Machine learning using KubernetesMachine learning using Kubernetes
Machine learning using Kubernetes
 
Building Cloud Native Applications
Building Cloud Native ApplicationsBuilding Cloud Native Applications
Building Cloud Native Applications
 
Chaos Engineering with Kubernetes
Chaos Engineering with KubernetesChaos Engineering with Kubernetes
Chaos Engineering with Kubernetes
 
How to be a mentor to bring more girls to STEAM
How to be a mentor to bring more girls to STEAMHow to be a mentor to bring more girls to STEAM
How to be a mentor to bring more girls to STEAM
 
Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018
 
The Serverless Tidal Wave - SwampUP 2018 Keynote
The Serverless Tidal Wave - SwampUP 2018 KeynoteThe Serverless Tidal Wave - SwampUP 2018 Keynote
The Serverless Tidal Wave - SwampUP 2018 Keynote
 
Introduction to Amazon EKS - KubeCon 2018
Introduction to Amazon EKS - KubeCon 2018Introduction to Amazon EKS - KubeCon 2018
Introduction to Amazon EKS - KubeCon 2018
 
Mastering Kubernetes on AWS - Tel Aviv Summit
Mastering Kubernetes on AWS - Tel Aviv SummitMastering Kubernetes on AWS - Tel Aviv Summit
Mastering Kubernetes on AWS - Tel Aviv Summit
 
Top 10 Technology Trends Changing Developer's Landscape
Top 10 Technology Trends Changing Developer's LandscapeTop 10 Technology Trends Changing Developer's Landscape
Top 10 Technology Trends Changing Developer's Landscape
 
Container Landscape in 2017
Container Landscape in 2017Container Landscape in 2017
Container Landscape in 2017
 
Java EE and NoSQL using JBoss EAP 7 and OpenShift
Java EE and NoSQL using JBoss EAP 7 and OpenShiftJava EE and NoSQL using JBoss EAP 7 and OpenShift
Java EE and NoSQL using JBoss EAP 7 and OpenShift
 
Docker, Kubernetes, and Mesos recipes for Java developers
Docker, Kubernetes, and Mesos recipes for Java developersDocker, Kubernetes, and Mesos recipes for Java developers
Docker, Kubernetes, and Mesos recipes for Java developers
 
Thanks Managers!
Thanks Managers!Thanks Managers!
Thanks Managers!
 
Migrate your traditional VM-based Clusters to Containers
Migrate your traditional VM-based Clusters to ContainersMigrate your traditional VM-based Clusters to Containers
Migrate your traditional VM-based Clusters to Containers
 

Último

Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 

Último (20)

Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 

GlassFish REST Administration Backend at JavaOne India 2012

  • 1. 1 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 2. GlassFish REST Administration Back End Arun Gupta, Java EE & GlassFish Guy blogs.oracle.com/arungupta, @arungupta 2 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 3. The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle s products remains at the sole discretion of Oracle. 3 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 2011,
  • 4. Program Agenda •  Background –  JAX-RS –  GlassFish •  Implementation details •  Tips and Tricks •  Clients •  Future plans •  Q & A 4 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 5. Program Agenda •  Background –  JAX-RS –  GlassFish •  Implementation details •  Tips and Tricks •  Clients •  Future plans •  Q & A 5 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 6. Background JAX-RS •  JAX-RS –  Standard annotation-driven API that aims to help developers build RESTful Web services in Java –  JSR 311: JAX-RS 1.x released Nov 2009 •  Jersey –  Reference implementation of JAX-RS –  Ships with GlassFish 6 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 7. Background Sample JAX-RS resource 1 @Path("myresource")
 2 @Produces({"application/html, application/xml, application/json"})
 3 public class MyResource {
 4
 5 @GET /* curl -X GET http://example.com/myapp/myresource */
 6 public MyResource getMyResource() { . . . }
 7
 8 @GET @Path("{Name}/") /* curl -X GET http://example.com/myapp/myresource/someChildName */
 9 public ChildResource getMyChildResource(@PathParam("Name") String name) { . . .}
 10
 11 @POST /* curl -X POST -d "attr1=value1:attr2=value2..." http://example.com/myapp/myresource */
 12 public Response creatResource(HashMap<String, String> data) { . . . }
 13
 14 @DELETE /* curl -X DELETE http://.../myapp/myresource */
 15 public Response deleteResource() { . . . }
 16 }
 " " 7 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 8. Program Agenda •  Background –  JAX-RS •  GlassFish •  Implementation details •  Tips and Tricks •  Clients •  Future plans •  Q & A 8 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 9. Background GlassFish –  Java EE reference implementation –  Highly modular •  Leverages OSGI •  Every container/service is a set of OSGI modules •  Multiple distributions –  Java EE Web Profile –  Java EE Full Profile •  Possible to add modules to existing distribution 9 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 10. Background GlassFish Modular Architecture Full Profile Distribution MDB Container JMS Service EJB Container CMP Java Mail ACC Web Profile Distribution EJB Lite Java Transaction Naming Web Container Deployment JDBC Service Container Persistence Service Service GlassFish Nucleus Config CLI Monitoing REST Security Grizzly Framework Framework Framework Backend Service HK2 OSGI Runtime Java SE 10 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 11. Background GlassFish Configuration •  domain.xml file –  Persistence storage for configuration –  Dynamic structure and content. •  GlassFish is highly modular •  Defined at run time depending on modules installed 11 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 12. Background GlassFish domain.xml snippet 1 <domain log-root="${com.sun.aas.instanceRoot}/logs" ... >
 2 <applications>...</applications>
 3 <resources>
 4 <jdbc-connection-pool datasource-classname="..." res-type="javax.sql.XADataSource" name="__TimerPool"> 
 5 <property name="connectionAttributes" value=";create=true"></property>
 6 ...
 7 </jdbc-connection-pool>
 8 <jdbc-connection-pool datasource-classname="..." res-type="javax.sql.XADataSource" name="MyPool"> 
 9 <property name="MyProperty" value="MyValue"></property>
 10 </jdbc-connection-pool>
 11 ...
 12 <jdbc-resource pool-name="TimerPool" jndi-name="jdbc/__TimerPool" object-type="system-admin"></jdbc-resource>
 13 ...
 14 </resources>
 15 <configs>
 16 <config name="server-config">
 17 <http-service> ... </http-service>
 18 <ejb-container session-store="${com.sun.aas.instanceRoot}/session-store">
 19 <ejb-timer-service>...</ejb-timer-service>
 20 </ejb-container>
 21 ...
 22 </config>
 23 ...
 24 </configs>
 25 ...
 26 </domain>" 12 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 13. Program Agenda •  Background –  JAX-RS –  GlassFish •  Implementation details •  Tips and Tricks •  Clients •  Future plans •  Q & A 13 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 14. Implementation Details GlassFish Config Beans •  Annotated pojos •  Each module uses config beans to define its configuration 14 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 15. Implementation Details Example Config Bean @Configured" public interface JdbcConnectionPool extends ConfigBeanProxy {" @Attribute(key=true) " String getName(); " void setName(String value);" " @Attribute " String getDatasourceClassname();" ..." @Element " List<Property> getProperty();" ..." }" 15 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 16. Implementation Details Example Config Bean @Configured" public interface JdbcConnectionPool extends ConfigBeanProxy {" @Attribute(key=true) " String getName(); " @Attribute " String getDatasourceClassname();" ..." @Element " List<Property> getProperty();" ..." }" Corresponding snippet from domain.xml <jdbc-connection-pool name=" ... " datasource-classname=" ... " >" <property name="..." value="..."/ > " <property name="..." value="..."/ > " </jdbc-connection-pool>" " 16 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 17. Implementation Details GlassFish Command Line Interface (CLI) •  The gateway to manipulate GlassFish configuration –  Transaction –  Replication •  Examples –  Create a jdbc connection pool $ asadmin create-jdbc-connection-pool 
 --datasourceclassname oracle.jdbc.pool.OracleDataSource 
 --property User=scott:Password=tiger:URL=jdbc:oracle:thin ..." MyOraclePool" –  Delete a jdbc connection pool $ asadmin delete-jdbc-connection-pool MyOraclePool" 17 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 18. Implementation Details GlassFish Command Line Interface (CLI) 1 @org.glassfish.api.admin.ExecuteOn(RuntimeType.ALL)
 2 @Service(name="create-jdbc-connection-pool")
 3 ...
 4 public class CreateJdbcConnectionPool implements AdminCommand { 
 5 @Param(name="jdbc_connection_pool_id", alias = "name", primary=true)
 6 String jdbc_connection_pool_id;
 7
 8 @Param(name = "datasourceClassname", optional=true)
 9 String datasourceclassname;
 10
 11 @Param(name="property", optional=true, separator=':')
 12 Properties properties;
 13
 14 public void execute(AdminCommandContext context) {
 15 create_internal_data_structures();
 16 persist_into_configuration();
 17 }
 18 }
 " 18 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 19. Implementation Details GlassFish admin REST backend •  Management GlassFish Server Instance –  Access to configuration REST Backend –  GET to access and navigate POST DELETE configuration tree GET GlassFish CLI –  POST/DELETE to mutate configuration Config Beans •  Wraps CLI to mutate configuration objects domain.xml 19 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 20. Implementation Details GlassFish admin REST backend •  Monitoring GlassFish Server Instance –  Data available as a tree in REST Backend running GlassFish VM GET –  GET to access and navigate Monitoring Tree the tree 20 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 21. Implementation Details GlassFish admin REST backend •  Demo –  Lets see REST backend in action 21 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 22. Implementation Details GlassFish Config Bean as REST resource 1 public ListJdbcConnectionPoolResource {
 2
 3 @Contextprotected ResourceContext resourceContext;
 4
 5 @GET 
 6 public Response get() {
 7 return Response.ok().entity(get_list_of_jdbc_resourcecs()).build();
 8 }
 9
 10 @POST
 11 public Response createResource(HashMap<String, String> data) {
 12 RestActionReporter actionReport = ResourceUtil.runCommand(getPostCommand(), data, ...);
 13 return Response.ok(arr).build();
 14 }
 15
 16 @Path("{Name}/") 
 17 public JdbcConnectionPoolResource getJdbcConnectionPoolResource(@PathParam("Name") String id) {
 18 JdbcConnectionPoolResource resource = 
 19 resourceContext.getResource(JdbcConnectionPoolResource.class);
 20 resource.setBeanByKey(entity, id);
 21 return resource;
 22 }
 23 }" 22 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 23. Implementation Details GlassFish Config Bean as REST resource 1 public class JDBCConnectionPoolResource {" 2 "" 3 @GET" 4 public Response getEntity() {" 5 return Response.ok(get_content_of_current_config_bean() )" 6 } " 7" 8 @POST" 9 public Response updateEntity(HashMap<String, String> data) {" 10 RestActionReporter ar = Util.applyChanges(data, uriInfo, habitat); // calls asadmin set" 11 return Response.ok(
 12 ResourceUtil.getActionReportResult(ar, successMessage, requestHeaders, uriInfo)).build();" 13 }" 14" 15 @DELETE" 16 public Response delete(HashMap<String, String> data) {" 17 RestActionReporter actionReport = runCommand(getDeleteCommand(), data);" 18 }" 19" 20 }" " 23 "Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 24. Implementation Details Code Generation •  Generate REST resources dynamically –  Visit each bean of GlassFish config model to drive generation •  Bytecode –  Uses ASM •  Text – For development time debugging •  Report – Generating usage report –  Abstract out most of the logic in handwritten base class –  REST enable newly added module transparently 24 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 25. Implementation Details Bootstrapping •  Initialized lazily –  No startup penalty •  No dependency on servlet container –  Using Grizzly adapter Set<Class> classes = 
 <All ASM generated classes> + <All providers> + <static classes>" ResourceConfig rc = new DefaultResourceConfig(classes); " httpHandler = ContainerFactory.createContainer(HttpHandler.class, rc);" 25 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 26. Program Agenda •  Background –  JAX-RS –  GlassFish •  Implementation details •  Tips and Tricks •  Clients •  Future plans •  Q & A 26 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 27. Tips And Tricks Enable Efficient Programmatic and Manual Consumption •  GlassFish REST interface is used by –  Users of GlassFish. •  Prefer HTML –  GlassFish Admin GUI and other programmatic consumption •  Prefer JSON/XML •  @Provider for various formats –  ActionReport[Html|Json|Xml]Provider •  com.sun.jersey….ResourceConfig#MediaTypeMapping –  Add mediatype mapping for “.xml” “.json” and “.html” for content negotiation 27 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 28. Tips And Tricks Annotate domain model •  Enables modularity –  Associate commands that manipulate a config bean @Configured " @RestRedirects({" @RestRedirect(opType = RestRedirect.OpType.POST, commandName = "create-jdbc-resource")," @RestRedirect(opType = RestRedirect.OpType.DELETE, commandName = "delete-jdbc-resource")" })" "public interface JdbcResource extends ConfigBeanProxy, Resource, .. { . . . }" –  Place a command at certain position in tree @Service(name = "copy-config")" @RestEndpoints({" @RestEndpoint(configBean=Configs.class, opType=OpType.POST, path="copy-config",..)" })" public final class CopyConfigCommand ...{ ... }
 " 28 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 29. Tips And Tricks Security •  REST is stateless –  Authentication info travels with every request •  GlassFish Admin GUI console (Client) needs to cache credentials •  Security Risk if it caches userId + passWord •  Authentication tokens –  Self expiring –  Admin GUI requests a token with user supplied id and password –  Subsequent request only need to use the token 29 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 30. Tips and Tricks GET insatnce1 GET insatnce2 data data Proxy-ing •  GlassFish Monitoring DAS REST Backend –  Data collected on each GET GET instance of cluster Monitoring Tree •  Proxy instance data through DAS Instance2 –  DAS proxies request to Instance1 REST Backend REST Backend target instance Monitoring Tree –  Provides transparency Monitoring Tree –  Handles security 30 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 31. Program Agenda •  Background –  JAX-RS –  GlassFish •  Implementation details •  Tips and Tricks •  Clients •  Future plans •  Q & A 31 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 32. Clients Of GlassFish REST backend •  GlassFish Admin GUI console •  GlassFish NetBeans plugin •  GlassFish Eclipse plugin •  GlassFish.next •  LightFish.adambien.com •  End Users –  Browser 32 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 33. Program Agenda •  Background –  JAX-RS –  GlassFish •  Implementation details •  Tips and Tricks •  Clients •  Future plans •  Q & A 33 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 34. Future Plans •  Provide client side library with various language bindings •  Backend of Console for GlassFish.next •  Leverage planned work in Jersey to define REST resources without generating classes •  Improve HTML interface •  Internal clean up 34 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 35. Resources •  GlassFish –  home page - http://glassfish.java.net/ –  REST backend source code - https://svn.java.net/svn/glassfish~svn/trunk/main/nucleus/admin/rest/rest-service/ •  JAX-RS –  JAX-RS 1.x - http://jcp.org/en/jsr/detail?id=311 –  JAX-RS 2.0 - http://jcp.org/en/jsr/detail?id=339 –  Jersey – http://jersey.java.net 35 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 36. Q&A 36 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 37. Latin America 2011 December 6–8, 2011 Tokyo 2012 April 4–6, 2012 37 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 38. 38 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.