Download presentation
Presentation is loading. Please wait.
Published byEmery Clarke Modified over 9 years ago
1
Building Web Portals as Science Gateways Marlon Pierce mpierce@cs.indiana.edu with slides from Dennis Gannon, Ahmet Sayar, Galip Aydin Indiana University Marlon Pierce mpierce@cs.indiana.edu with slides from Dennis Gannon, Ahmet Sayar, Galip Aydin Indiana University
2
Outline of Talk Overview of computing portals as gateways to cyberinfrastructure. –With several example projects Architectures and standards of computing portals. –Review of portal architectures –Review of JSR168 Building science portals. –With a motivating example New technologies and techniques –JSF –AJAX Overview of computing portals as gateways to cyberinfrastructure. –With several example projects Architectures and standards of computing portals. –Review of portal architectures –Review of JSR168 Building science portals. –With a motivating example New technologies and techniques –JSF –AJAX
3
Computing for the Greater Good Recent devastating natural disasters have demonstrated the need for large scale, distributed scientific computing. –Katrina, Rita, … –Christmas 2004 tsunamis –Earthquakes in Pakistan and future major earthquakes in California, Japan, … 1906 was 99 years ago… Research in large scale distributed computing can make a difference in people’s lives. But many challenges lie ahead. Recent devastating natural disasters have demonstrated the need for large scale, distributed scientific computing. –Katrina, Rita, … –Christmas 2004 tsunamis –Earthquakes in Pakistan and future major earthquakes in California, Japan, … 1906 was 99 years ago… Research in large scale distributed computing can make a difference in people’s lives. But many challenges lie ahead.
4
Cyberinfrastructure (CI) Overview Cyberinfrasture combines –Grid computing: Globus toolkit, Storage Resource Broker, Condor, UK OMII, OGSA- DAI, etc. Provides the software for tying together distributed computing resources –High speed networking –Hardware: supercomputers, clusters, workstations –Applications: modeling, simulation, data analysis codes in many fields. –Data: raw, cooked, shared, derived, cataloged, etc. –Information/Internet Technology: web services, portals, databases, XML, semantic web/grid, audio/video collaboration, shared Web spaces, etc. –People Cyberinfrastructure is supposed to enable remote collaborations and distributed teams. This is the reality of a lot of science (and science funding) Cyberinfrasture combines –Grid computing: Globus toolkit, Storage Resource Broker, Condor, UK OMII, OGSA- DAI, etc. Provides the software for tying together distributed computing resources –High speed networking –Hardware: supercomputers, clusters, workstations –Applications: modeling, simulation, data analysis codes in many fields. –Data: raw, cooked, shared, derived, cataloged, etc. –Information/Internet Technology: web services, portals, databases, XML, semantic web/grid, audio/video collaboration, shared Web spaces, etc. –People Cyberinfrastructure is supposed to enable remote collaborations and distributed teams. This is the reality of a lot of science (and science funding)
5
Scientific Challenges The current and future generations of scientific problems are: –Data Oriented (CI challenge) Increasingly stream based. Often need petabyte archives But linking data to applications across groups is a general problem. –In need of on-demand computing resources (CI challenge) –Conducted by geographically distributed teams of specialists Who don’t want to become experts in grid computing. The current and future generations of scientific problems are: –Data Oriented (CI challenge) Increasingly stream based. Often need petabyte archives But linking data to applications across groups is a general problem. –In need of on-demand computing resources (CI challenge) –Conducted by geographically distributed teams of specialists Who don’t want to become experts in grid computing. On-Demand Storm predictions Streaming Observations Forecast Model Data Mining Storms Forming
6
Science Web Portals The goals of a Science Web Portal are –To give a community of researchers easy access to Computational applications and tools Primary data, shared data, derived data Computational resources All are needed to solve today’s scientific and engineering problems. –To do this in a discipline specific language that is common to the target community. Science Portals are “gateways” to underlying Grid tools –Grids provide access to computing resources –Gateways manage the user’s interaction with the grid. The goals of a Science Web Portal are –To give a community of researchers easy access to Computational applications and tools Primary data, shared data, derived data Computational resources All are needed to solve today’s scientific and engineering problems. –To do this in a discipline specific language that is common to the target community. Science Portals are “gateways” to underlying Grid tools –Grids provide access to computing resources –Gateways manage the user’s interaction with the grid.
7
What is a Science Portal? A standards-based web portal –Provides each user with a secure way to login and authenticate identity A view of a private workspace for accessing and managing data and tools Tutorials and community news –Announcements of new services Collaboration tools –Chat, calendaring, group messaging Core Science Functions … A standards-based web portal –Provides each user with a secure way to login and authenticate identity A view of a private workspace for accessing and managing data and tools Tutorials and community news –Announcements of new services Collaboration tools –Chat, calendaring, group messaging Core Science Functions …
8
Portal Science Capabilities Data Access is the most important –Allow the user community access to important shared data resources Visualize it, publish it, download it, curate it. –Data Discovery Searchable metadata directories. Web access to important tools –Web-form interfaces to allow users to run important community codes –Webstart access to common java-based tools Workflow tools –Allow users to combine community codes into workflows managed by the portal back-end resources. Data Access is the most important –Allow the user community access to important shared data resources Visualize it, publish it, download it, curate it. –Data Discovery Searchable metadata directories. Web access to important tools –Web-form interfaces to allow users to run important community codes –Webstart access to common java-based tools Workflow tools –Allow users to combine community codes into workflows managed by the portal back-end resources.
9
Let’s look at a few real examples (about a dozen … many more exist!)
10
ServoGrid Portal
11
NEESGrid Realtime access to earthquake Shake table experiments at remote sites.
12
Geological Information Grid Portal
13
Mesoscale Meteorology NSF LEAD project - making the tools that are needed to make accurate predictions of tornados and hurricanes. - Data exploration and Grid workflow
14
Renci Bio Portal Providing access to biotechnology tools running on a back-end Grid. - leverage state-wide investment in bioinformatics - undergraduate & graduate education, faculty research - another portal soon: national evolutionary synthesis center
15
SCOOP ADCIRC Interface SURA SCOOP –Southeastern Coastal Ocean Observing Program Advanced Circulation Model (ADCIRC) –Finite Element Hydraulic Model for Coastal Areas, Inlets and Rivers Rick Luettich (UNC), Joannes Westerink (Notre Dame) Randall Kolar (Oklahoma), Clint Dawson (Texas), Corps of Engineers Collaborators: –Leuttich/Blanton (UNC Marine Sciences) –Ramakrishnan/Lander (RENCI) SURA SCOOP –Southeastern Coastal Ocean Observing Program Advanced Circulation Model (ADCIRC) –Finite Element Hydraulic Model for Coastal Areas, Inlets and Rivers Rick Luettich (UNC), Joannes Westerink (Notre Dame) Randall Kolar (Oklahoma), Clint Dawson (Texas), Corps of Engineers Collaborators: –Leuttich/Blanton (UNC Marine Sciences) –Ramakrishnan/Lander (RENCI) Current ADCIRC grid Decomposition Set Run Dates Submit Job To GRID Katrina Storm Surge Prediction (Leuttich/Blanton)
16
X-Ray Crystallography
17
Flood Modeling Large-scale flooding along Brays Bayou in central Houston triggered by heavy rainfall during Tropical Storm Allison (June 9, 2001) caused more than $2 billion of damage. University of Texas TACC Center for Research in Water Resources ORNL Purdue Gordon Wells, UT; David Maidment, UT; Budhu Bhaduri, ORNL, Gilbert Rochon, Purdue
18
Teragrid Gateway Portals TeraGrid –The largest “public” super- computing grid in the US. 50 TFlops –Massive Data storage capability Over 1 Petabyte on-line storage TeraGrid Gateways –Access points for communities. –Two types: A gateway between 2 grids –Open Science Grid gate way is one example. –Science Community Portal is the other type Includes LEAD portal, Nanohub, Renci Bioportal, NVO An additional set of new science portals just being developed. TeraGrid –The largest “public” super- computing grid in the US. 50 TFlops –Massive Data storage capability Over 1 Petabyte on-line storage TeraGrid Gateways –Access points for communities. –Two types: A gateway between 2 grids –Open Science Grid gate way is one example. –Science Community Portal is the other type Includes LEAD portal, Nanohub, Renci Bioportal, NVO An additional set of new science portals just being developed.
19
The Portal as a Service Framework Many important science portals are designed to access and orchestrate stand- alone web services and databases Others are service frameworks that sit on top of an existing Grid, such as TeraGrid. In both cases: –The architecture is similar –Common portal services are often shared A Common architecture is emerging Many important science portals are designed to access and orchestrate stand- alone web services and databases Others are service frameworks that sit on top of an existing Grid, such as TeraGrid. In both cases: –The architecture is similar –Common portal services are often shared A Common architecture is emerging
20
The Architecture of Gateway Services The Users Desktop. Gateway Services Grid Portal Server Grid Portal Server Physical Resource Layer Core Grid Services Proxy Certificate Server / vault Proxy Certificate Server / vault Application Events Resource Broker User Metadata Catalog User Metadata Catalog Replica Mgmt Application Workflow Application Workflow App. Resource catalogs App. Resource catalogs Application Deployment Application Deployment Execution Management Execution Management Information Services Information Services Self Management Self Management Data Services Data Services Resource Management Resource Management Security Services Security Services OGSA-like Layer
21
Next Steps Many components of this architecture are now shared between different portal groups. We now look at some of the technology behind these portals. Many components of this architecture are now shared between different portal groups. We now look at some of the technology behind these portals.
22
A Portal Architecture Review
23
A Famous Web Portal
24
A Famous Portal, After Login
25
What to Notice After logging in, my colors, layouts, and content all changed. After logging in, my colors, layouts, and content all changed. I get my stock list, my Bloomington weather, my news stories, etc.I get my stock list, my Bloomington weather, my news stories, etc. I got rid of “Garfield”I got rid of “Garfield” As we will see later, each of these content fragments (encircled) is managed by a thing called a portlet… As we will see later, each of these content fragments (encircled) is managed by a thing called a portlet… … I don’t guarantee that this is true for Yahoo’s web site but it is true for a large class of enterprise Java portal systems.… I don’t guarantee that this is true for Yahoo’s web site but it is true for a large class of enterprise Java portal systems. Portlets are the key to portal software reuse. Portlets are the key to portal software reuse.
26
Let 10,000 Flowers Bloom Many portal projects have been launched since late ’90s. Many portal projects have been launched since late ’90s. First Generation: HotPage from SDSC, NCSA efforts, DOD, DOE Portals, NASA IPGFirst Generation: HotPage from SDSC, NCSA efforts, DOD, DOE Portals, NASA IPG 2002 Special Issue of Concurrency and Computation: Practice and Experience.2002 Special Issue of Concurrency and Computation: Practice and Experience. The field continues to be active The field continues to be active Global Grid Forum 14 Science Gateway workshop in June 2005.Global Grid Forum 14 Science Gateway workshop in June 2005. About 15 gateways will be described in upcoming issue of Concurrency.About 15 gateways will be described in upcoming issue of Concurrency. GCE2005 workshop at Supercomputing 05.GCE2005 workshop at Supercomputing 05. How do we share and reuse all of this work? How do we share and reuse all of this work?
27
Portal User Interface Grid Resource Broker Service Grid and Web Protocols Information and Data Services Database Service Database HPC or Compute Cluster Grid Information Services, SRB Portal Client Stub Portal Client Stub Portal Client Stub JDBC, Local, or Remote Connection Three-Tiered Architecture Three-tiered architecture is accepted standard for accessing Grid and other services
28
JSR 168 Overview Java Portlet Standard
29
What Is a Portlet? A portlet is a piece of Java code that manages the content of one section of a web portal’s HTML. A portlet is a piece of Java code that manages the content of one section of a web portal’s HTML. It can do anything else that a Java web application can do. It can do anything else that a Java web application can do. You can connect a portlet to a database, invoke a web service, download an RSS feed, etc.You can connect a portlet to a database, invoke a web service, download an RSS feed, etc. It lives in a portlet container, which creates, manages, and destroys all the portlets of the portal. It lives in a portlet container, which creates, manages, and destroys all the portlets of the portal. Portlet containers are part of portals. Portlet containers are part of portals. Portals must do other things like manage login, users, groups, layouts, etc.Portals must do other things like manage login, users, groups, layouts, etc. JSR 168 standardizes two main things: JSR 168 standardizes two main things: How the portlet container manages portlet lifecyclesHow the portlet container manages portlet lifecycles How the portlets are programmed.How the portlets are programmed.
30
What is JSR 168? From the portlet development point of view, it is really very simple: From the portlet development point of view, it is really very simple: You write a java class that extends GenericPortlet.You write a java class that extends GenericPortlet. You override/implement several methods inherited from GenericPortlet.You override/implement several methods inherited from GenericPortlet. You use some supporting classes/interfacesYou use some supporting classes/interfaces Many are analogous to their servlet equivalents Many are analogous to their servlet equivalents Some (portletsession) actually seem to be trivial wrappers around servlet equivalents in Pluto. Some (portletsession) actually seem to be trivial wrappers around servlet equivalents in Pluto. A complete example is available from A complete example is available from http://www.servogrid.org/slide/iSERVO/NMI/OG CETutorialMaterialhttp://www.servogrid.org/slide/iSERVO/NMI/OG CETutorialMaterial
31
Some Open Source JSR 168 Containers GridSphere GridSphere http://www.gridsphere.orghttp://www.gridsphere.orghttp://www.gridsphere.org uPortal uPortal http://www.uportal.orghttp://www.uportal.orghttp://www.uportal.org LifeRay LifeRay http://sourceforge.net/projects/lportalhttp://sourceforge.net/projects/lportalhttp://sourceforge.net/projects/lportal eXo platform eXo platform http://www.exoplatform.comhttp://www.exoplatform.comhttp://www.exoplatform.com StringBeans StringBeans http://www.nabh.com/projects/sbportalhttp://www.nabh.com/projects/sbportal Jetspeed2 Jetspeed2 http://portals.apache.org/jetspeed-2/http://portals.apache.org/jetspeed-2/http://portals.apache.org/jetspeed-2/
32
Some GenericPortlet.java Methods MethodDescription Init Called when the portlet is created. Override if you need to set initial params. doView Controls what happens immediately before the portlet is displayed in view mode. Normally you override this. doHelp, doEdit Other portlet display modes processAction Place for handling any actions before turning over to the display mode method (like doView). You should override this for web forms.
33
Some Supporting Classes/Interfaces ClassDescription PortletContext Similar to servlet context; get context info and the RequestDispatcher from here. PortletSession Stores attribute information for a single portlet application across multiple requests. RenderRequest, RenderResponse The request and response objects available to the doView() method. Similar to the normal servlet request ActionRequest,Actio nResponse The request and response objects available to the processAction() method. Similar to the servlet request and response objects. PortletURL Use this to create URLs that reference the portal. PortletRequestDispa tcher Use this to include/forward to a JSP or servlet in the same portlet app. WindowState See if you are in minimized, maximized, normal state.
34
The Big Picture As a portlet developer, the previous set of classes are all you normally touch. As a portlet developer, the previous set of classes are all you normally touch. The portlet container is responsible for running your portlets. The portlet container is responsible for running your portlets. Init, invoke methods, destroy.Init, invoke methods, destroy. Portlets have a very limited way of interacting with the container. Portlets have a very limited way of interacting with the container. The API is basically one-way.The API is basically one-way.
35
In Action: Get started. public class JunkPortlet extends GenericPortlet { public void init(){ //Do any initialization. } //Rest of the methods on following slides go here. … }
36
Override doView() protected void doView( RenderRequest req, RenderResponse res) throws PortletException, IOException { //Include the desired JSP or HTML page. //We could also use out to write directly to the response. WindowState state=req.getWindowState(); if(!state.equals(WindowState.MINIMIZED)) { res.setContentType("text/html"); PortletRequestDispatcher rd= getPortletContext().getRequestDispatcher(“MyJSP.jsp ”); rd.include(req,res); }
37
The JSP Page <% PortletSession portletSession=renderRequest.getPortletSession(); portletSession.setAttribute("localattname","localattval"); PortletURL url=renderResponse.createActionURL(); String theActionString=url.toString(); %> HTML Content is here. A form is below. ">
38
Some Notes Include the tag, which will instantiate renderRequest, renderResponse, and portletConfig objects. –You can then just use them, as with request, response, and other JSP implicit objects. The renderRequest gives you access to the PortletSession, if you want to store session variables. –One of the trouble points. The renderResponse gives you access to the PortletURL object. Use the PortletURL to generate a URL for the –So that it points to portlet container and gets handled by the processAction() method, rather than going of into space. –Handle href URLs similarly. –This is one of the sticking points.
39
Lastly, Override processAction() When you invoke the form on the previous JSP, the portlet container will pass the action handling to the processAction method. The ActionRequest can be used to get any of the parameters in a way similar to the usual HttpServletRequest. When the processAction method returns, the container then invokes the appropriate do method (usually doView). If you need to pass parameters on to doView, add them to the ActionResponse. –This will give them to the RenderRequest. –The example shows how to add ALL parameters. public void processAction (ActionRequest request, ActionResponse actionResponse) throws PortletException, java.io.IOException { //Process request parameters … //Add other params // to the renderRequest actionResponse.setRenderPar ameters(request.getParameter Map()); }
40
A Comment on Portlet Coding JSR 168 seems to make some important and dubious assumptions JSR 168 seems to make some important and dubious assumptions Developers will gladly ignore other development methodologies/frameworks like Velocity, Struts, and Java Server Faces.Developers will gladly ignore other development methodologies/frameworks like Velocity, Struts, and Java Server Faces. Developers instead want to write a GenericPortlet extension for every single portlet they develop.Developers instead want to write a GenericPortlet extension for every single portlet they develop. And write really complicated processAction() and doView() methods. And write really complicated processAction() and doView() methods. Developers will like the specific JSR 168 portlet-style Model-View-Controller that it forces on them.Developers will like the specific JSR 168 portlet-style Model-View-Controller that it forces on them. Fortunately, these other development environments can be mapped to portlet actions. Fortunately, these other development environments can be mapped to portlet actions. In the OGCE project, we have developed support for Velocity portlets.In the OGCE project, we have developed support for Velocity portlets. We are transitioning to Java Server FacesWe are transitioning to Java Server Faces
41
A Grid Portlet Scenario Developing a Simple Grid Portlet Application
42
A Quantum Chemistry Code Submission Form You have been asked to develop a submission form for the Democritos group’s Quantum Espresso (QE) package. You have been asked to develop a submission form for the Democritos group’s Quantum Espresso (QE) package. These forms should help users set up and run QE applications on the TeraGrid and other Grid installations. These forms should help users set up and run QE applications on the TeraGrid and other Grid installations. Mix of GT 2, GT 4, Condor, etc., for submissionMix of GT 2, GT 4, Condor, etc., for submission You are told to initially support the Plane Wave Self Consistent Field (PWSCF) code. You are told to initially support the Plane Wave Self Consistent Field (PWSCF) code. Other QE applications may follow. Other QE applications may follow. These may be coupled with PWSCF into simple workflows, but this is a later problem.These may be coupled with PWSCF into simple workflows, but this is a later problem.
43
Your Deployment Architecture Portal Server @FSU GT 4 @TG MSI PBS GT 2 @UMN TeraGrid LSF Your portal server runs at FSU. It acts as a common Gateway to different grid toolkit installations and resources
44
Some Issues You decide the JSR 168 style portlets are the way to go… You decide the JSR 168 style portlets are the way to go… But of course the PWSCF portlet doesn’t exist yet.But of course the PWSCF portlet doesn’t exist yet. You will need to also support other Quantum Espresso codes. You will need to also support other Quantum Espresso codes. Would like to reuse as much code as possible.Would like to reuse as much code as possible. But your PWSCF portlet isn’t reusable at that level.But your PWSCF portlet isn’t reusable at that level. You also would like to simplify saving user input data and session archiving. You also would like to simplify saving user input data and session archiving.
45
PWSCF Web Forms for Submission
46
Your Choices JSR 168 will allow you to share your portlet code with other collaborators. JSR 168 will allow you to share your portlet code with other collaborators. The Java COG Kit will help hide the differences between Grid toolkits for common tasks. The Java COG Kit will help hide the differences between Grid toolkits for common tasks. Vanilla JSF will help simplify your portlet development in several ways. Vanilla JSF will help simplify your portlet development in several ways. JSF decouples your backing code from the Servlet APIJSF decouples your backing code from the Servlet API You can write your backing code as pure Java Beans/Plain Old Java Objects. You can write your backing code as pure Java Beans/Plain Old Java Objects. You don’t have to adopt, maintain HTTP parameter name conventions. You don’t have to adopt, maintain HTTP parameter name conventions. Your form input backing beans can be serialized/deserialized with Castor.Your form input backing beans can be serialized/deserialized with Castor. Coupling JSF and COG will allow you to compose your Grid actions using simple JSF taglibs. Coupling JSF and COG will allow you to compose your Grid actions using simple JSF taglibs. You can reuse your Grid taglibs in other Quantum Espresso portlets.You can reuse your Grid taglibs in other Quantum Espresso portlets. You can compose composite actionsYou can compose composite actions
47
The Java CoG Kit Gregor von Laszewski Argonne National Laboratory University of Chicago gregor@mcs.anl.gov http://www.cogkit.org (as interpreted by MEP)
48
CoG Kits CoG Kits make Grid programming simple and new technologies are easy to integrate CoG Kits make Grid programming simple and new technologies are easy to integrate We focus on a CoG Kit for Java We focus on a CoG Kit for Java Python also available (K. Jackson, LBNL)Python also available (K. Jackson, LBNL) Availability: Java CoG Kit since 1997Availability: Java CoG Kit since 1997 The CoG provides two important things The CoG provides two important things A higher level client programming environment than stubs.A higher level client programming environment than stubs. A shield against different versions of the Globus toolkitA shield against different versions of the Globus toolkit Same high level API works with GT 2.4, GT 3.0.2, GT 3.2.0, GT 3.2.1, GT 4.0.0 Same high level API works with GT 2.4, GT 3.0.2, GT 3.2.0, GT 3.2.1, GT 4.0.0
49
CoG Abstraction Layer CoG CoG Data and Task Management Layer CoG Gridfaces Layer CoG CoG GridIDE GT2 GT3 OGSI classic GT4 WS-RF CondorUnicore Applications SSH Others Avaki SETI Nano materials Bio- Informatics Disaster Management Portals CoG Abstraction Layer CoG CoG Data and Task Management Layer CoG Gridfaces Layer CoG CoG GridIDE Development Support CoG Abstraction Layers
51
Task Handler Service Task Specification Security Context Service Contact The class diagram is the same for all grid tasks (running jobs, modifying files, moving data). Classes also abstract toolkit provider differences. You set these as parameters: GT2, GT4, etc.
52
Setting Up Task and Specification Task task=new TaskImpl(“mytask”, Task.JOB_SUBMISSION);task.setProvider(“GT2”); JobSpecification spec= new JobSpecificationImpl(); spec.setExecutable(“rm”);spec.setBatchJob(true);spec.setArguments(“-r”);…task.setSpecification(spec);
53
Setting Up the Service and Security Context Service service=new ServiceImpl(Service.JOB_SUBMISSION); service.setProvider(“GT2”); SecurityContext securityContext= CoreFactory.newSecurityContext(“GT2”); //Use cred object from ProxyManager securityContext.setCredentials(cred);service.setSecurityContext((SecurityContext)securityContext);
54
Set Up Service Contact and Finish ServiceContact serviceContact= new ServiceContact(“myhost.myorg.org”); service.setServiceContact(serviceContact);task.setService(Service.JOB_SUBMISSION_SERVICE,service); TaskHandler handler=new GenericTaskHandler(); handler.submit(task);
55
Coupling CoG Tasks The COG abstractions also simplify creating coupled tasks. The COG abstractions also simplify creating coupled tasks. Tasks can be assembled into task graphs with dependencies. Tasks can be assembled into task graphs with dependencies. “Do Task B after successful Task A”“Do Task B after successful Task A” Graphs can be nested. Graphs can be nested.
56
Java COG Summary The Java COG 4 interfaces provide high level abstractions for building Grid clients. The Java COG 4 interfaces provide high level abstractions for building Grid clients. Abstract out differences between Grid toolkits.Abstract out differences between Grid toolkits. Provide task abstractions that form the basis for constructing DAG-style, file-based workflow.Provide task abstractions that form the basis for constructing DAG-style, file-based workflow. The COG can be used to build a wide range of clients The COG can be used to build a wide range of clients Desktops, grid shells, and of course portals.Desktops, grid shells, and of course portals. Portlets are a well known way to build reusable portal components.Portlets are a well known way to build reusable portal components.
57
Building Grid Portlets with Java Server Faces
58
Limitations of Portlets Portlets provide a way to bundle and share a complete application. Portlets provide a way to bundle and share a complete application. RSS portlet, GridFTP portlet, SRB portlet, etc.RSS portlet, GridFTP portlet, SRB portlet, etc. Portlets combine the user interface view and action code.Portlets combine the user interface view and action code. But in science gateway development, we often need finer grained components. But in science gateway development, we often need finer grained components. “When user clicks button, upload file, launch code, and move data someplace when done.”“When user clicks button, upload file, launch code, and move data someplace when done.” Combines “GridFTP” and “Job Submit” portlets…Combines “GridFTP” and “Job Submit” portlets… Or maybe OGSA-DAI or SRB or ….Or maybe OGSA-DAI or SRB or …. We need a way for the view and action code to be developed from reusable parts. We need a way for the view and action code to be developed from reusable parts.
59
JSF and Science Gateways JSF enables you to back your science application input form portlets with Java Beans. JSF enables you to back your science application input form portlets with Java Beans. These are independent of the servlet container, so are easy to test and to reuse in other applications.These are independent of the servlet container, so are easy to test and to reuse in other applications. But also, Java Beans can be easily serialized with XML. But also, Java Beans can be easily serialized with XML. Castor, XML BeansCastor, XML Beans Marshal and un-marshal user input for persistent storage in XML storage servicesMarshal and un-marshal user input for persistent storage in XML storage services OGSA-DAI, GPIR, WS-Context OGSA-DAI, GPIR, WS-Context Potentially, can develop backing code as XML Schema and generate the code.Potentially, can develop backing code as XML Schema and generate the code.
60
JSF for Grid Enabled HTML Widgets Natural program: develop Java Bean wrappers around Java COG kit, OGSA-DAI client API, SRB Jargon, etc. Natural program: develop Java Bean wrappers around Java COG kit, OGSA-DAI client API, SRB Jargon, etc. Allows simple integration with JSF.Allows simple integration with JSF. Some issues exist Some issues exist JSF only manages individual bean instances.JSF only manages individual bean instances. But grid portlets will need to manage an unknown number of bean instances.But grid portlets will need to manage an unknown number of bean instances. You may launch and monitor many different jobs. You may launch and monitor many different jobs. We need a way of scripting composite actions created out of multiple reusable actions.We need a way of scripting composite actions created out of multiple reusable actions.
61
COG Bean Wrappers Recall the COG structure Recall the COG structure Executable tasks abstract basic grid actions and hide toolkit version differences.Executable tasks abstract basic grid actions and hide toolkit version differences. These tasks can be collected into file- based DAG workflows.These tasks can be collected into file- based DAG workflows. First problem is simple: wrap tasks as beans to make them available to JSF. First problem is simple: wrap tasks as beans to make them available to JSF. GenericGridBean defines the interfaceGenericGridBean defines the interface Second problem is managing multiple individual tasks. Second problem is managing multiple individual tasks.
62
Managing Multiple Grid Tasks We must create and manage multiple beans for each task. We must create and manage multiple beans for each task. That is, I submit the job four times in one session.That is, I submit the job four times in one session. Similarly, we can create multiple task graph clones.Similarly, we can create multiple task graph clones. We do this by cloning and storing each bean. We do this by cloning and storing each bean. Beans have listeners and maintain state. Beans have listeners and maintain state. Unsubmitted, submitted, active, suspended, resumed are “live”Unsubmitted, submitted, active, suspended, resumed are “live” Stored in live repository Stored in live repository Failed, canceled, completed, unknown are “dead”Failed, canceled, completed, unknown are “dead” Stored in archive (WS-Context or other) Stored in archive (WS-Context or other) Alternative approach: use one bean that is a bean factory for GenericGridTask beans. Alternative approach: use one bean that is a bean factory for GenericGridTask beans.
63
Corresponding JSF snippets
64
Task Monitoring with JSF Data Model Corresponding Java class. public class Job { private String jobId; private String status; private String submitDate; private String finishDate; }
65
Using AJAX Galip Aydin, Ahmet Sayar, and Marlon Pierce Community Grids Lab Indiana University
66
What Is AJAX? Asynchronous JavaScript and XML is a combination of standard Web technologies Asynchronous JavaScript and XML is a combination of standard Web technologies JavaScript, CSS, DOM, XMLJavaScript, CSS, DOM, XML When done properly, it provides apparently seamless interactivity in browser clients. When done properly, it provides apparently seamless interactivity in browser clients. No browser reloadsNo browser reloads Much smoother than standard request-wait-response for browser forms.Much smoother than standard request-wait-response for browser forms. Several Google tools are a very well known examples. Several Google tools are a very well known examples. Google maps, Gmail, etc.Google maps, Gmail, etc. The real key is the standardization of the XMLHttpRequest Object The real key is the standardization of the XMLHttpRequest Object Originally developed for Internet ExplorerOriginally developed for Internet Explorer Now supported by all major browsers.Now supported by all major browsers. Seminal article from Adaptive Path Seminal article from Adaptive Path http://www.adaptivepath.com/publications/essays/archives/ 000385.phphttp://www.adaptivepath.com/publications/essays/archives/ 000385.phphttp://www.adaptivepath.com/publications/essays/archives/ 000385.phphttp://www.adaptivepath.com/publications/essays/archives/ 000385.php
67
AJAX Architecture Taken from http://www.adaptivepath.com/publications/essays/archives/000385.php
68
The Main Idea: Asynchronous JavaScript Calls to Server AJAX’s key concept is the use of XMLHttpRequest to buffer requests and responses within the browser. AJAX’s key concept is the use of XMLHttpRequest to buffer requests and responses within the browser. Use XMLHttpRequest to make a call to the server and get back the response without displaying it.Use XMLHttpRequest to make a call to the server and get back the response without displaying it. The response is stored locally as either plain text (plain or HTML), or XML.The response is stored locally as either plain text (plain or HTML), or XML. JavaScript + DOM can be used to walk the HTML or XML tree to handle most user interactions.JavaScript + DOM can be used to walk the HTML or XML tree to handle most user interactions. The XMLHttpRequest object in turn can issue requests and process responses independently of the user’s interaction. The XMLHttpRequest object in turn can issue requests and process responses independently of the user’s interaction. Go and fetch additional maps, for example.Go and fetch additional maps, for example.
69
Asynchronous Invocations
70
How it Works
71
Simple Example: GIS and Google Maps The Web Feature Service is a standard geographical information system service. The Web Feature Service is a standard geographical information system service. It stores geographic features and metadata used to construct maps.It stores geographic features and metadata used to construct maps. Features are represented with the Geographic Markup LanguageFeatures are represented with the Geographic Markup Language For example, the location and properties of earthquake faults and seismic events.For example, the location and properties of earthquake faults and seismic events. The Feature Service is typically constructed around traditional request-response. The Feature Service is typically constructed around traditional request-response. We would like to combine this with Google Maps to make more interactive user interfaces. We would like to combine this with Google Maps to make more interactive user interfaces. So let’s get started. So let’s get started.
72
Integrating Google Maps and GIS Services Simple Architecture Supported Feature Data by the WFS Layer specific parameters for filtering
73
Making the request Creating an XMLHttpRequest Object Creating an XMLHttpRequest Object For any browser, except IEFor any browser, except IE var requester = new XMLHttpRequest(); var requester = new XMLHttpRequest(); In IEIn IE var requester = new ActiveXObject("Microsoft.XMLHTTP"); var requester = new ActiveXObject("Microsoft.XMLHTTP"); Transporting Data using an XMLHttpRequest Object Transporting Data using an XMLHttpRequest Object To retrieve data from the server we use two methods : open() to initialize the connection, send() to activate the connection and make the request. requester.open("GET", "getFaultNames.jsp?State=CA"); requester.send(null);To retrieve data from the server we use two methods : open() to initialize the connection, send() to activate the connection and make the request. requester.open("GET", "getFaultNames.jsp?State=CA"); requester.send(null); This request is for all California fault information in the Feature Service. This request is for all California fault information in the Feature Service. It will be encoded in GMLIt will be encoded in GML It may take a bit of time to download….It may take a bit of time to download….
74
Checking the Connection Status To find out if the data retrieval is done we check the status of the readyState variable. Object’s status may be any of the following: To find out if the data retrieval is done we check the status of the readyState variable. Object’s status may be any of the following: 0 – Uninitialised 1 – Loading 2 – Loaded 3 – Interactive 4 – Completed requester.onreadystatechange monitors the readyState variables status.requester.onreadystatechange monitors the readyState variables status. if (requester.readyState == 4){ if (requester.status == 200){ success(); } if (requester.status == 200){ success(); } else{ failure(); } }
75
Parsing the Data After a successful request XMLHttpRequest object may hold data in one of the two properties: responseXML or responseText. After a successful request XMLHttpRequest object may hold data in one of the two properties: responseXML or responseText. responseXML stores a DOM-structured XML data. responseXML stores a DOM-structured XML data. San Andreas San Andreas </Fault> We use JavaScript XML parsing methods such as getElementsByTagName(), childNodes[], parentNode… We use JavaScript XML parsing methods such as getElementsByTagName(), childNodes[], parentNode… var faultNameNode = requester.responseXML.getElementsByTagName(“Name")[0]; var faultName = faultNameNode.childNodes[0].nodeValue; var faultNameNode = requester.responseXML.getElementsByTagName(“Name")[0]; var faultName = faultNameNode.childNodes[0].nodeValue; We can then use Google Map JavaScript functions to create the browser display. We can then use Google Map JavaScript functions to create the browser display. responseText stores the data as one complete string in case the content type of the data supplied by the server was text/plain or text/html. responseText stores the data as one complete string in case the content type of the data supplied by the server was text/plain or text/html.
76
Ajax Calls From JSP Pages In the 1 st JSP page In the 1 st JSP page function checkForMessage() { function checkForMessage() { var url = "relay.jsp"; initRequest(url); initRequest(url); req.onreadystatechange = processReqChange; req.onreadystatechange = processReqChange; req.open("GET", url, true); req.open("GET", url, true); req.send(null); req.send(null); } The request is forwarded to relay.jsp The request is forwarded to relay.jsp In the 2 nd JSP page (relay.jsp) In the 2 nd JSP page (relay.jsp) <% Bean.getNames(response); %> The response object will contain the XML result object. The response object will contain the XML result object.
77
Integrating Web Feature Service Archives and Google Maps Google maps can be integrated with Web Feature Service Archives to browse earthquake fault records. Faults are typically stored by segment number, so map interfaces are convenient for both verifying continuity and setting up input files for computing problems.
78
Other Useful Examples AJAX is also useful for simulating server data pushing. AJAX is also useful for simulating server data pushing. Browser interface is updated periodically from locally stored data.Browser interface is updated periodically from locally stored data. XMLHttpRequest periodically requests updates asyncrhonously.XMLHttpRequest periodically requests updates asyncrhonously. Replace annoying browser reload polling and fragile, non-standard server push. Replace annoying browser reload polling and fragile, non-standard server push. The browser is always available for user interactions while the XMLHttpRequest object is being updated. The browser is always available for user interactions while the XMLHttpRequest object is being updated. Examples: Chat applications and GPS streams Examples: Chat applications and GPS streams
79
Real Time GPS and Google Maps Subscribe to live GPS station. Position data from SOPAC is combined with Google map clients. Select and zoom to GPS station location, click icons for more information.
80
Conclusions Computing portals scientific gateways. Computing portals scientific gateways. Gateways include both user interface components and supporting services.Gateways include both user interface components and supporting services. Manage user interactions with Grid infrastructure.Manage user interactions with Grid infrastructure. We reviewed standards for building portals out of reusable components. We reviewed standards for building portals out of reusable components. JSR 168 portlet standardJSR 168 portlet standard Several new techniques can be used to build portlets. Several new techniques can be used to build portlets. Java Server Faces: reusable components for portlets.Java Server Faces: reusable components for portlets. AJAX: better interactivity for portletsAJAX: better interactivity for portlets
81
More Information mpierce@cs.indiana.edu mpierce@cs.indiana.edu Open Grid Computing Environments Open Grid Computing Environments http://www.collab-ogce.orghttp://www.collab-ogce.org Geographical Information System services Geographical Information System services http://www.crisisgrid.orghttp://www.crisisgrid.org QuakeSim QuakeSim http://quakesim.jpl.nasa.govhttp://quakesim.jpl.nasa.gov
82
Integrating JSF and COG 4 Mehmet Nacar and Marlon Pierce
83
JSF for Grid Enabled HTML Widgets Natural program: develop Java Bean wrappers around Java COG kit, OGSA-DAI client API, SRB Jargon, etc. –Allows simple integration with JSF. Some issues exist –JSF only manages individual bean instances. –But grid portlets will need to manage an unknown number of bean instances. You may launch and monitor many different jobs. –We need a way of scripting composite actions created out of multiple reusable actions.
84
COG Bean Wrappers Recall the COG structure –Executable tasks abstract basic grid actions and hide toolkit version differences. –These tasks can be collected into file-based DAG workflows. First problem is simple: wrap tasks as beans to make them available to JSF. –GenericGridBean defines the interface Second problem is managing multiple individual tasks.
85
JSF Task Management Class Structure
86
Managing Multiple Grid Tasks We must create and manage multiple beans for each task. –That is, I submit the job four times in one session. –Similarly, we can create multiple task graph clones. We do this by cloning and storing each bean. Beans have listeners and maintain state. –Unsubmitted, submitted, active, suspended, resumed are “live” Stored in live repository –Failed, canceled, completed, unknown are “dead” Stored in archive (WS-Context or other) Alternative approach: use one bean that is a bean factory for GenericGridTask beans.
87
Managing Multiple Tasks
88
Creating Task Graphs COG Task Graphs correspond to composite JSF Web Form actions. –Do X, Y, and then Z when user clicks the button. Each of these actions may be reused, but the entire action is new. We must do two things –Wrap the COG TaskGraphHandler with a bean and bean manager. –Provide tag bindings for defining the custom actions.
89
Constructing Task Graphs
90
Expressing Task Graphs with Tags ………
91
Corresponding JSF snippets
92
Task Monitoring with JSF Data Model Corresponding Java class. public class Job { private String jobId; private String status; private String submitDate; private String finishDate; }
93
Extended Slides
94
The Java CoG Kit Gregor von Laszewski Argonne National Laboratory University of Chicago gregor@mcs.anl.gov http://www.cogkit.org (as interpreted by MEP)
95
CoG Kits CoG Kits make Grid programming simple and new technologies are easy to integrate We focus on a CoG Kit for Java –Python also available (K. Jackson, LBNL) –Availability: Java CoG Kit since 1997 The CoG provides two important things –A higher level client programming environment than stubs. –A shield against different versions of the Globus toolkit Same high level API works with GT 2.4, GT 3.0.2, GT 3.2.0, GT 3.2.1, GT 4.0.0
96
CoG Abstraction Layer CoG CoG Data and Task Management Layer CoG Gridfaces Layer CoG CoG GridIDE GT2 GT3 OGSI classic GT4 WS-RF CondorUnicore Applications SSH Others Avaki SETI Nano materials Bio- Informatics Disaster Management Portals CoG Abstraction Layer CoG CoG Data and Task Management Layer CoG Gridfaces Layer CoG CoG GridIDE Development Support CoG Abstraction Layers
97
Task Handler Service Task Specification Security Context Service Contact The class diagram is the same for all grid tasks (running jobs, modifying files, moving data). Classes also abstract toolkit provider differences. You set these as parameters: GT2, GT4, etc.
98
Java COG Summary The Java COG 4 interfaces provide high level abstractions for building Grid clients. –Abstract out differences between Grid toolkits. –Provide task abstractions that form the basis for constructing DAG-style, file-based workflow. The COG can be used to build a wide range of clients –Desktops, grid shells, and of course portals. –Portlets are a well known way to build reusable portal components.
99
Building Grid Portlets with Java Server Faces
100
Limitations of Portlets Portlets provide a way to bundle and share a complete application. –RSS portlet, GridFTP portlet, SRB portlet, etc. –Portlets combine the user interface view and action code. But in science gateway development, we often need finer grained components. –“When user clicks button, upload file, launch code, and move data someplace when done.” –Combines “GridFTP” and “Job Submit” portlets… –Or maybe OGSA-DAI or SRB or …. We need a way for the view and action code must be developed from reusable parts.
101
PWSCF Web Forms for Submission
102
Java Server Faces Overview JSF can solve the reusable portlet widget problem. –JSF can also work in “standalone” mode outside of portlets. –Potentially independent of Web applications. XUL and Swing widget bindings We will first examine JSF generally Conclude with integrating JSF and COG
103
Advantages of JSF JSF hides communication details that connect HTML forms with backing code. –You don’t have to worry about servlet specific request, response, and session objects. –You don’t have to maintain fragile naming conventions for tags. Developers only need to develop JavaBeans and tag libraries. –Beans are independent of Web applications. –Can be easily written and tested outside of servlet containers. –Compatible popular “Inversion of Control” based systems like JSF and Spring
104
JSF and Science Gateways JSF enables you back your science application input form portlets with Java Beans. –Again, these are independent of the servlet container, so are easy to test and to reuse in other applications. But also, Java Beans can be easily serialized with XML. –Castor, XML Beans –Marshal and un-marshal user input for persistent storage in XML storage services OGSA-DAI, GPIR, WS-Context –Potentially, can develop backing code as XML Schema and generate the code.
105
A JSF Example Hello Enter some text in the form below <h:inputText id="userSt" value="#{multiEventBean.userString}"/> <h:commandButton id="submit" action="success" value="Submit" >
106
The JSF Page Note everything with or namespace prefix is a JSF tag. –Usually, tags mimic HTML widgets. – is for non-rendered stuff. –Everything else is good old HTML. There are three different Java classes here. –They are all in the package multiEventTest –multiEventBean.java is just a bean with typical get/set methods. –Listener1.java and Listener2.java implement the javax.faces.event.ActionListener interface. All 3 classes are called when you click the command button. Also, take a look at. This is roughly equivalent to. –But no name needed. JSF handles parameter names for you and connects them to the beans you specify. –This greatly simplifies writing generic actions.
107
A Simple Example: HtmlDataGrid This shows an example of how to use HtmlDataTable to display some results.
108
It Looks Like This
109
Some Explanation The binds to a particular data set with value=“ValueBean.itemList”. –ValueBean.itemList must be java.util.List, java.sql.ResultSet or similar. –The values of these lists may be beans also. The var=“” just defines a useful internal value. –Here, each entry in the list is set equal to “values”. –In the example, the items in the list happen to be simple beans with member variables “value1” and “value2” along with appropriate getter/setters. When you load the page, it just iterates through the entries in ValueBean.itemList and creates the table, as you instructed. Note again there are no loops in the actual page. Also, you don’t know anything about the data you are getting.
110
JSF Magic: Data Models The M in MVC is the Data Model –“Abstract” representation of a data structure That is, not tied to the display of the data (“view”) JSF DataModel extension classes include –Arrays: wrap arrays of Java objects –Lists: wraps a java.util.List of Java objects –Results: for JSTL’s Result object, which itself wraps SQL ResultSets. –ResultSets: also for JDBC, wraps the ResultsSet object directly. –Scalar: Wraps an individual Java object. Typically, these should follow Bean patterns for naming member data and their associated getter/setters. You can write your own specialized Data Models. –XMLDataModel, for wrapping an XML data bean, comes to mind. –RSSDataModel is another that I found. These are associated with UIData classes in the JSF page for display. –HtmlDataTable is an example.
111
JSF Form Validators The user interface stuff ( and ) has lots of built-in validators –Verify that input entries are integers, doubles, etc. –Verify that input entries fall within the correct range (1 to 10 in the guessNumber example). –Verify the string has the right length. You can extend to write your own specialized validators
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.