Comments
Description
Transcript
Document 1288939
IBM WebSphere Developer Technical Journal Issue 13.7 : October 6, 2010 From the editor This issue of the IBM® WebSphere® Developer Technical Journal provides tips and advice for improved productivity, performance, and planning on several different levels. Improve development productivity with tips to help you work smarter with IBM WebSphere Integration Developer. Improve application server performance with the right workload management approach. Improve IT planning by understanding how to properly introduce and adopt new technologies into your environment. The theme continues throughout this month's articles. Read on for much more. Featured articles: Learn about the Java™ EE support provided by the WebSphere Application Server Feature Pack for SCA, find out whether a proxy server or the HTTP plug-in is the better workload management option for you, and get organized and more efficient with how you use WebSphere Intgeration Developer. Columns: The latest Comment lines explain why you need to treat new technology as new technology, and how integrating WebSphere Service Registry and Repository with IBM Tivoli® Application Dependency Discovery Manager can give you the view you always wanted. Also, Innovations within reach answers FAQs about the new IBM WebSphere DataPower® XC10 Appliance, The WebSphere Contrarian makes change easy once more, and The Support Authority describes how to set up WebSphere Application Server to run as a Windows® service. Your required reading begins below... Featured articles Proxy server versus the HTTP plug-in: Choosing the best WebSphere Application Server workload management option by John Pape and Robert Westland Since IBM® WebSphere® Application Server Version 6.0, the WebSphere proxy server has been available to provide intelligent routing of HTTP requests based on configured routing rules and performance metrics. Although not as smart as the on demand router component of IBM WebSphere Virtual Enterprise, the proxy server can provide services above and beyond the traditional WebSphere HTTP plug-in implementation seen in practically all IHS-fronted WebSphere Application Server clusters. This article compares these solutions in detail so you can determine the best choice for your requirements. Tips for working smarter and increasing productivity with WebSphere Integration Developer by Diana Lau Dealing with a high number of modules, artifacts, and projects at once in IBM WebSphere Integration Developer can be overwhelming at times. However, there are steps you can take and features you can leverage that can help you not only become better organized, but also help you improve build time and increase your productivity as well. This article provides tips to help you make this happen. Exploring the WebSphere Application Server Feature Pack for SCA: Java EE support in the Feature Pack for SCA by Anbumunee Ponniah, Chao M Beck and Vijai Kalathur This article continues an earlier series on the functionality provided by the WebSphere Application Server V7 Feature Pack for Service Component Architecture (SCA). This latest installment describes the integration of Java™ EE support in the SCA feature pack and the benefits that are realized with this integration. The feature pack supports the use of Java EE archives as SCA component implementations, the consumption of SCA exposed services from Java EE components, and the exposure of stateless session EJB services as SCA services with support for rewiring those services. These and other features can help Java EE programmers and architects transcend differences in implementation technologies and leverage an SCA architecture with little or no changes to their existing code. The Support Authority Running WebSphere Application Server as a Windows service by Alain Del Valle and Dr. Mahesh Rathi This article will help a domain administrator set up IBM WebSphere Application Server to run as a Windows service under a domain user account. The process involves the domain administrator logging in to the local machine and providing the correct rights for the domain user. The steps to do this are provided along with an example. Innovations within reach There's a new purple appliance in town Frequently asked questions about the WebSphere DataPower XC10 elastic caching solution by Charles Le Vay The IBM WebSphere DataPower XC10 Appliance is a quick, easy, and cost-effective way to add an elastic data caching tier to enhance your application infrastructure. To help introduce you to the capabilities of this new appliance, which combines the robust DataPower hardware appliance platform with IBM's state of the art distributed caching technology, here are the top ten frequently asked questions about this new product. The WebSphere Contrarian Change is hard, or is it? by Tom Alcott Changing the LDAP bind password in IBM WebSphere Application Server doesn't have to be complex and mandate an outage or interruption of service. The WebSphere Contrarian discusses a simple pattern that can be employed to change the LDAP bind password used by WebSphere Application Server in a simple and easy way. Comment lines The challenges of introducing new technology by Andre Tost "Companies have to deal with new products and new patterns of solution design, new requirements towards the maintenance and operation of business solutions, and new opportunities for directly supporting the business needs in IT. However, most organizations try to address these challenges with their existing roles, responsibilities, and processes. I want to describe a common issue that I have come to identify as "the challenge of introducing new technology" and look at the best way an organization can deal with this challenge..." Integrating WebSphere Service Registry and Repository with Tivoli Application Dependency Discovery Manager? by Robert Peterson "If you are using IBM WebSphere Service Registry and Repository, chances are that you're integrating it with other IBM WebSphere products, such as IBM WebSphere Message Broker or IBM WebSphere DataPower. But did you know that you can also integrate Service Registry and Repository with several IBM Tivoli products as well? For example, you can export metadata about WSDL services from Service Registry and Repository and then load that metadata into IBM Tivoli Application Dependency Discovery Manager (TADDM). With information on Service Registry and Repository Web services in TADDM, an administrator can have a holistic view of all the Web services and policies active in their IT environments from one place..." Proxy server versus the HTTP plug-in: Choosing the best WebSphere Application Server workload management option Skill Level: Intermediate John Pape WebSphere Application Server SWAT Team IBM Robert Westland ([email protected]) WebSphere Application Server WLM Architect IBM 06 Oct 2010 Since IBM® WebSphere® Application Server Version 6.0, the WebSphere proxy server has been available to provide intelligent routing of HTTP requests based on configured routing rules and performance metrics. Although not as smart as the on-demand router component of IBM WebSphere Virtual Enterprise, the proxy server can provide services above-and-beyond the traditional WebSphere HTTP plug-in implementation seen in practically all IHS-fronted WebSphere Application Server clusters. This article compares these solutions so you can make determine the best choice for your requirements. Introduction In clustered IBM® WebSphere® Application Server environments, HTTP and Session Initiation Protocol (SIP) requests are typically load-balanced through a combination of network layer devices and one or more HTTP server processes augmented with the WebSphere HTTP plug-in module. This setup is great for load balancing these requests to back end application servers, as well as dealing with fault tolerance in the case of server failure. But there is at least one other way to do this. Choosing the best WebSphere Application Server workload management option © Copyright IBM Corporation 2010. All rights reserved. Page 1 of 20 developerWorks® ibm.com/developerWorks This article looks at the traditional approach to load balancing Web requests to a WebSphere Application Server cluster, and then examines an alternative method using the WebSphere proxy server. This article will provide a high level overview of each method and compare them so you can make informed decisions on which is better for your applications. Using the HTTP plug-in If you have a WebSphere Application Server cluster deployed into a production environment, then chances are good that you have a set of HTTP server instances placed upstream from your cluster that are outfitted with the WebSphere HTTP plug-in. This configuration provides load balancing and simple failover support for the applications that are deployed to the cluster. The HTTP plug-in module is loaded into an HTTP server instance and examines incoming requests to determine if the request needs to be routed to a WebSphere Application Server. The plug-in examines the host and port combination along with the requested URL and determines whether or not to send the request on. If the request is to be serviced by WebSphere Application Server, the plug-in copies pertinent information (such as headers from the original request) and creates a new HTTP request that is sent to the application server. Once a response is given from the application server, the plug-in then matches up the response with the original request from the client and passes the data back. (It’s actually much more complicated than that under the covers, but this level of detail is sufficient for this discussion.) Failover support is also a crucial consideration for a WebSphere Application Server cluster. When a specific server fails, the HTTP plug-in will detect the failure, mark the server unavailable, and route requests to the other available cluster members. Figure 1 shows a picture of a sample topology that uses the WebSphere HTTP plug-in. Figure 1. Sample topology with the HTTP plug-in in use Choosing the best WebSphere Application Server workload management option Page 2 of 20 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® If all you want to do is route requests using simple load balancing (such as round-robin), then the plug-in will work for you. But what if you want to setup more complex routing? What if you want to direct traffic to one cluster during the day and another during the night? What if you want your routing to be sensitive to the amount of load on a certain server? These things are possible when you replace the HTTP plug-in with a WebSphere Application Server proxy server instance. Using a proxy server The WebSphere proxy server was introduced in WebSphere Application Server Network Deployment V6.0.2. The purpose of this server instance is to act as a surrogate that can route requests to back end server clusters using routing rules and load balancing schemes. Both an HTTP server configured with the HTTP plug-in and the WebSphere Application Server proxy server can be used to load balance requests being serviced by WebSphere application servers, clusters, or Web servers. Both are also used to improve performance and throughput by providing services such as workload management and caching Web content to offload back Choosing the best WebSphere Application Server workload management option © Copyright IBM Corporation 2010. All rights reserved. Page 3 of 20 developerWorks® ibm.com/developerWorks end server work. Additionally, the proxy server can secure the transport channels by using Secure Socket Layer (SSL) as well as implementing various authentication and authorization schemes. The load balancing features provided by the proxy server are similar in nature to the HTTP plug-in. The proxy server, however, has custom routing rules that the HTTP plug-in does not, plus significant advantages in terms of usability, performance, and systems management. In WebSphere Application Server V6.1, the proxy server became a first class server; it is created, configured, and managed from the deployment manager either using the console or the wsadmin commands. It uses the HA manager, on demand configuration (ODC), and a unified clustering framework (UCF) to automatically receive configuration and run time changes to the WebSphere Application Server topology. With the release of WebSphere Application Server V7.0, a new type of WebSphere proxy server instance is available: the DMZ secure proxy. This server is similar in form factor to the original proxy server except it is better suited for deployment in the demilitarized zone (DMZ) areas of the network. Figure 2 shows a typical proxy server topology. Figure 2. Sample topology with the proxy server installed Choosing the best WebSphere Application Server workload management option Page 4 of 20 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® You will notice that Figure 2 is very similar to Figure 1, which shows how proxy server instances can easily replace the HTTP servers in the topology. A new WebSphere Application Server custom profile can be created on these hosts, and be federated back to the deployment manager for cell 1, creating proxy servers on each node. Also notice the new shapes added in the diagram for the core group bridge, on demand configuration (ODC), and unified clustering framework (UCF) elements, which shows the tight integration with WebSphere Application Server. These elements are components inside of the cell and, together with the HA manager, provide the proxy server with the run time and configuration information needed to support load balancing and failover. A big strength of the proxy server is its ability to utilize routing rules that are configured by the WebSphere Application Server administrator. Routing rules are bits of configuration that can be applied to the proxy that enable routing inbound requests in any manner desired. Aside from routing rules, proxies provide other capabilities, including: Choosing the best WebSphere Application Server workload management option © Copyright IBM Corporation 2010. All rights reserved. Page 5 of 20 developerWorks® ibm.com/developerWorks • Content caching (both dynamic and static). • Customizable error pages. • Advanced workload management • Performance advisors that can be used to determine application availability. • Workload feedback, which is used to route work away from busy servers. • Customizable URL rewriting. • Denial-of-service protection. The HTTP plug-in also provides caching of both static and dynamic content but does not have the other advanced routing capabilities of the proxy server. Comparing configurations Looking at Figures 1 and 2 above, the HTTP server with plug-in and the proxy server are positioned right in front of the application server tier and fit into a typical multi-tiered topology in basically the same place. Both utilize WebSphere Application Server and application server clusters (in the application tier) to provide deployed applications with scalability, workload balancing, and high availability qualities of service. The next sections compare the similarities and differences between the HTTP server and the WebSphere proxy server in the areas of their architecture, administration, caching, load balancing, failover, routing behaviors, and routing transports. Differences between the proxy server and the DMZ secure proxy server will also be noted. At the end, Table 1 summarizes the major comparison points. Architecture • Proxy server A WebSphere proxy server is a reverse caching proxy that is included in WebSphere Application Server Network Deployment (hereafter referred to as Network Deployment). The proxy server is basically a different type of WebSphere application server that manages the request workload received from clients and forwards them on to the application server that is running applications. Because the proxy server is based on WebSphere Application Server, it inherits these advantages: • The proxy server can be dynamically informed of cluster Choosing the best WebSphere Application Server workload management option Page 6 of 20 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® configuration, run time changes, and application information updates by utilizing the built-in high availability infrastructure, unified clustering framework, and on demand configuration. • The proxy server can also use the transport channel framework, which builds specific I/O management code per platform. Using this framework enables the proxy to handle thousands of connections and perform I/O operations very quickly. The internal architecture of the proxy server was designed using a filter framework and was implemented in Java™, which enables it to be easily extended by WebSphere Application Server. Figure 3 shows the high-level architecture of the proxy server in a Network Deployment configuration. Figure 3. Proxy server in a Network Deployment configuration • HTTP plug-in The HTTP plug-in integrates with an HTTP server to provide workload management of client requests from the HTTP server to WebSphere Application Servers. The plug-in determines which requests are to be handled by the HTTP server and which are to be sent to WebSphere Application Server servers. The plug-in uses a plugin-cfg.xml file that Choosing the best WebSphere Application Server workload management option © Copyright IBM Corporation 2010. All rights reserved. Page 7 of 20 developerWorks® ibm.com/developerWorks contains application, server, and cluster configuration information used for server selection. This file is generated on Network Deployment using the administration console and copied to the appropriate directory of the HTTP plug-in. When any new application is deployed or any server or cluster configuration changes are made, the plugin-cfg.xml file must be regenerated and redistributed to all HTTP servers. Figure 4 shows the high-level architecture of the HTTP server with the plug-in routing requests to Network Deployment application servers. Figure 4. HTTP plug-in routing requests • DMZ secure proxy server New in WebSphere Application Server V7.0 is a proxy server that was designed to be installed be in a DMZ, called the DMZ secure proxy server. Its architecture is the same as a standard proxy server expect that functions which are not needed or not available in the DMZ are removed. There are three predefined default security levels for the server: low, medium, and high. When configured using low security, the proxy behaves and the cluster data is updated in the same manner as a non-secure proxy. When running with medium security, it again behaves the same as the standard proxy server, except that the cluster and configuration information is updated via the open HTTP ports. When the proxy is configured with the high security level, all routing information is obtained "statically" from a generated targetTree.xml file, which contains Choosing the best WebSphere Application Server workload management option Page 8 of 20 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® all the cluster and configuration information required for the proxy server to determine where to route the HTTP request. Figure 5 shows the high-level architecture of the DMZ secure proxy server routing requests to Network Deployment application servers Figure 5. DMZ secure proxy server routing requests to application servers Administration • Proxy server The proxy server is available in Network Deployment and is easily created on any node in which WebSphere Application Server has been installed. Because a proxy server is just a different type of WebSphere Application Server, it is automatically integrated tightly with WebSphere Application Server system management, and leverages the WebSphere Application Server administration and management infrastructure. It is very simple to use the administration commands in the console to create a proxy server, and the proxy server is automatically configured as a reverse caching proxy (see Resources). Additional configuration settings are available to Choosing the best WebSphere Application Server workload management option © Copyright IBM Corporation 2010. All rights reserved. Page 9 of 20 developerWorks® ibm.com/developerWorks fine-tune the proxy server’s behavior to meet the needs of a particular environment. These settings include options such as the number of connections and requests to a server, caching, defining how error responses are handled, and the location of the proxy logs. Setting the proper configuration and enabling caching of static or dynamic content can improve the overall performance of client requests. For the most part, the proxy server setup and configuration is the same for all WebSphere Application Server distributed platforms and for System z. However, there is one limitation: on System z, you cannot deploy an application that could be used to serve up a defined error page for various errors. Creating a cluster of proxy servers helps in the administration of multiple proxy servers. It is easy to create a single proxy server, get it fully configured the way you want, and to create the cluster based on the configured proxy. Once the cluster has been created, it can be used to easily add additional proxy servers, all configured exactly the same as the original member. Having a cluster of proxy servers enables an external IP sprayer or HTTP plug-in to spray requests to the proxy cluster to eliminate single points of failure and to support load balancing. • DMZ secure proxy server WebSphere Application Server provides a separate installation package to enable a proxy server to be installed into a DMZ. A DMZ proxy server requires some additional configuration and setup because there is no administrative console on the server itself. Rather, the administration of the secure proxy server is handled with scripting or by using an administrative agent. There is also support that requires the use of a Network Deployment back end cell administrative console. A DMZ proxy server profile can be created and configured, and then exported to the secure proxy profile of the DMZ image. The profile created on the Network Deployment cell is for configuration only and should not be used for any other purpose. Only the secure proxy profile on the DMZ image is fully operational. To harden the security of the DMZ secure proxy server, these capabilities are available: • Startup user permissions. • Routing consideration. • Administration options. • Error handling. Choosing the best WebSphere Application Server workload management option Page 10 of 20 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® • Denial of service protection. You select the security level you want from one of the three predefined default values (low, medium and high) during proxy server creation. You can customize various settings, but the resulting security level will become the lowest level associated with any of the settings. • HTTP plug-in The HTTP plug-in is shipped with WebSphere Application Server as a separately installed product and runs inside various HTTP servers to replace the basic routing provided by the HTTP server. You must install an HTTP server first, and then install the HTTP plug-in. When the installation is completed, the plugin-cfg.xml file needs to be created by the WebSphere Application Server deployment manager and saved to the appropriate plug-in directory on the system where the plug-in is installed. As workload is sent to the HTTP server, the server uses information from its configuration file to determine if the request should be handled by itself or by the plug-in. If the plug-in is to handle the request, it uses the information contained in a plugin-cfg.xml file to determine which back end application server the request should be sent to. When configuration changes occur, the plugin-cfg.xml file must be regenerated and replaced in the plug-in directory. The HTTP plug-in automatically reloads the file at a configured time interval; the default is every 60 seconds. Since WebSphere Application Server V6.02, the HTTP plug-in can be created to be one of two different types: • A topology-centric file includes all applications within a cell and is not managed by the administrative console. It is generated using the GenPluginCfg commands and must be manually updated to change any plug-in configuration properties. • An application-centric file has a granularity that enables each application to be mapped to its specific Web or application server, and can be managed and updated using the administration console. The HTTP plug-in has numerous configuration settings contained within the plugin-cfg.xml file (see Resources). The HTTP servers can also be configured as reverse caching proxies, but additional configuration is required after installation to support this. This type of configuration is typically used when you want clients to access application servers behind a firewall. Choosing the best WebSphere Application Server workload management option © Copyright IBM Corporation 2010. All rights reserved. Page 11 of 20 developerWorks® ibm.com/developerWorks Load balancing and failover Both the HTTP plug-in and WebSphere proxy server support workload management for load balancing and failover of client requests to application servers. Each has some administration control of where and how the requests can be configured, with more functionality available in the proxy server. However, there are some important differences between the two. • Cluster support The main difference centers around how each gets access to cluster data. The HTTP plug-in uses "static" configuration information obtained from the plugin-cfg.xml file. The proxy server obtains cluster data dynamically so that when run time changes are made, such as starting or stopping a member, changing the weight, or member’s availability, the information is updated in the proxy server at run time. Therefore, the proxy server is able to use an application "runtime view" of the cluster during selection, so only running members of the application are included, plus any run time configuration settings that have been made. The HTTP plug-in uses the cluster configuration information from the plugin-cfg.xml file. This information is static and is not updated dynamically during run time. It takes an administrative act to generate a new plugin-cfg.xml file and make it available to the running HTTP plug-in. Network Deployment does permit you to configure the Web server to provide some support for automatically generating the plug-in configuration file and propagating it to the Web server. The proxy server also supports defining a generic server cluster. This is a cluster that is configured to represent a group of resources whose management falls outside the domain of WebSphere Application Server. The cluster is configured and used by the proxy server to load balance requests to these resources. Keep in mind that because these are not WebSphere Application Server servers, the same qualities of service available to a WebSphere Application Server cluster is not available. The HTTP plug-in does not support the generic server clusters, however you can manually edit the information in the plugin-cfg.xml file. This can provide some benefits for generic servers but it most useful for merging the plugin-cfg.xml files from two different cells so that a single HTTP server can route to multiple WebSphere Application Server cells. You can also group standalone servers or multiple cluster members into a manually-configured cluster that is only known to the plug-in. You must take extreme care when making any manual changes to the plugin-cfg.xml file. The proxy server does not permit this type of editing of cluster and routing information. Choosing the best WebSphere Application Server workload management option Page 12 of 20 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® In a DMZ secure proxy server, the security level determines whether the proxy uses dynamic or static cluster data. Using a low or medium security level, the proxy server uses dynamic cluster data and basically behaves as a non-DMZ proxy server. However, when running in a high security level, the routing information is obtained from the taretTree.xml file and the data is the static cluster configuration information. The taretTree.xml file is generated on the cell(s) the proxy will be sending the HTTP requests to. Any time the back end server and cluster configurations change the targetTree.xml file must be regenerated and updated in the secure proxy server. • Routing and selection Since WebSphere Application Server V7.0, the proxy server and HTTP plug-in support two different routing algorithms: • The random algorithm ignores the weights on the cluster members and just selects a member at random. • The weighted round-robin algorithm uses each cluster member’s associated weight value and distributes members based on the set of member weights for the cluster. For example, if all members in the cluster have the same weight, the expected distribution for the cluster would be that all members receive the same number of requests. If the weights are not equal, the distribution mechanism will send more requests to a member with a higher-weighted value than to one with a lower weighted value. This provides a policy that ensures a desired distribution, based on the weights assigned to the cluster members. Valid weight values range from 0 to 20, with a default value of 2. The proxy server selection also includes a client side outstanding request feedback mechanism called blended weight feedback. This uses the member weight information along with the member’s current observed outstanding request information. This feedback provides a mechanism to route work away from members that have more outstanding requests in relationship to the other members in the cluster. • Failover Failover is provided in the event client requests can no longer be sent to a particular cluster member. This can be caused by a variety of conditions, such as being unable to establish a connection, or having the connection prematurely closed by the cluster member. When these failures occur, the proxy server and HTTP plug-in will mark the member as unavailable and route the request to another member. Both support configuration parameters that are used to fine-tune the detection and retry behavior. These parameters include things like setting the length of time for Choosing the best WebSphere Application Server workload management option © Copyright IBM Corporation 2010. All rights reserved. Page 13 of 20 developerWorks® ibm.com/developerWorks requests, connections, and server time-outs. Aside from connection failures and time-outs, the HTTP plug-in uses the maximum number of outstanding requests to a server to indicate when a server is hanging with some sort of application problem. Keeping track of outstanding requests and recognizing when the number of outstanding requests become higher than a configured value can be acceptable means of failure detection in many situations because application servers are not expected to become blocked or hung. There is one behavior difference that should be noted here: if a cluster member is stopped while client requests are being sent, the plug-in will continue to send requests to the stopped server until a request fails and the server is marked unavailable. However, the proxy server might be told that the member had been stopped before a client request is sent and remove the member from the selection algorithm. This can eliminate sending requests to an unavailable server. Again, this is accomplished because the proxy receives its cluster information dynamically. • HTTP session management The routing behavior of both the HTTP plug-in and proxy server are affected by how the HTTP session management and the distributed sessions are configured for the application and servers. This configuration involves session tracking, session recovery, and session clustering. When an HTTP client interacts with a servlet supporting session management, state information is associated with the HTTP session, is identified by a session ID, and is then available for a series of the client requests. The proxy server and HTTP plug-in both use session affinity to help achieve higher cache hits in WebSphere Application Server and reduce database access. When supporting session affinity, the proxy server and plug-in will try and direct all requests from a client -- for a specific session -- back to the same server on which the session was created. The default mechanism is to read the JSESSIONID cookie information passed along in the request, which contains the sessionId and serverId. This information will inform the selecting code to try and select the same member of the cluster for each request. Two other mechanisms that can be used to support session affinity are URL rewriting and SSL ID value. • HTTP session failover To support session failover, it is important to know that session management must be enabled and that distributed sessions are configured. You can configure either database or memory-to-memory to save session data in a distributed environment. Depending on which setting is used, the HTTP plug-in and proxy server behave differently. Choosing the best WebSphere Application Server workload management option Page 14 of 20 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® Both the proxy server and HTTP plug-in keep track of which servers own which sessions by using the sessionId returned by the server. If session data is to be maintained in a database, and the server the session currently exists on fails, then one of the other cluster members will be selected, the session information will be obtained from the database, and the session will now be associated with this server. However, if the session data is configured as memory-to-memory, then WebSphere Application Server will select a primary and one or more backup servers to keep backup data for each session. This enables a failed session request to be sent to a server already holding backup data for the session. The proxy server automatically supports this behavior. The HTTP plug-in can be configured to support "hot session" failover, and when this is done, a table of session information is obtained from the WebSphere Application Server containing the appropriate mapping of server to sessionId. If a request to a specific session fails, the plug-in will make a special request to one of the other cluster members to obtain new session data, which will contain the new server to session mapping information that will be used for selection. Table 1 summarizes the above comparisons. Table 1. Comparison summary Subject Architecture HTTP Plug-in Proxy server DMZ secure proxy server • Integrated into HTTP Server • A reverse caching proxy • A reverse caching proxy • Uses a static configuration file, plugin-cfg.xml • Specialized type of WebSphere application server • Specialized type of WebSphere application server • Application or configuration changes require a regen of plugin-cfg.xml file • Extendable proxy filter framework • Extendable proxy filter framework • Java implementation • Java implementation • No XML files needed; dynamic run time cluster data (ODC, • No XML files needed; dynamic run time cluster data (ODC, Choosing the best WebSphere Application Server workload management option © Copyright IBM Corporation 2010. All rights reserved. Page 15 of 20 developerWorks® ibm.com/developerWorks UCF, HAMgr) Administration Caching • Separate installation • Runs inside HTTP server • Requires static plugin-cfg.xml created in separate Network Deployment install. • Manual editing of its configuration files • Can be loosely integrated with WebSphere Application Server system management • Static • Tightly integrated with WebSphere Application Server system management UCF, HAMgr) • Dynamic run time cluster data in low and medium secure mode • Uses static configuration file, targetTree.xml, in high secure mode • Separate installation • Requires admin agent or WebSphere Application Server DMZ proxy profile • Easily created • WebSphere Application Server console and JMX to configure • Three predefined security levels: low, medium, high • Static • Same as Choosing the best WebSphere Application Server workload management option Page 16 of 20 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® content, such as images or HTML files Load balancing Failover content, such as images or HTML files • Supports using FRCA to cache certain dynamically generated serlvet and JSP files • Dynamic content, such as servlet returned information • Static routing uses plugin-cfg.xml file for routing data • Dynamic routing uses dynamically updated routing data • Must regenerate plugin-cfg.xml file when new cluster member is created and started • Supports generic server clusters with passive or active affinity • Automatically informed when new cluster member is created and started • Does not support generic server clusters with affinity • Must detect server is unavailable through a failed request • Is automatically notified when member becomes unavailable • Configured setting retryInterval. Defines time to • Automatically informed when failed server Choosing the best WebSphere Application Server workload management option © Copyright IBM Corporation 2010. All rights reserved. non-DMZ proxy server • In low and medium secure DMZ: dynamic routing • In high secure DMZ: static routing • In low and medium secure DMZ: supports generic server clusters with passive or active affinity • Low and medium secure DMZ: same function as non-DMZ supported • High secure DMZ: it must Page 17 of 20 developerWorks® ibm.com/developerWorks wait before retrying a failed server Routing behaviors Routing transports • Supports round-robin selection • Can be configured as a reverse caching proxy • Can manually edit plugin-cfg.xml file to manipulate routing behavior • Uses standard HTTP becomes available again • Proxy server actions, rule expressions, routing actions, and routing rules enable an administrator to control routing behavior for various business reasons • Custom advisor support • Is a reverse caching proxy • Supports round-robin and random selection • Uses the highly scalable detect server is unavailable through a failed request • Uses a health monitor to detect when failed server is available again • Same functions as non-DMZ proxy server • Same functions as Choosing the best WebSphere Application Server workload management option Page 18 of 20 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® transport protocol Routing protocol • HTTP WebSphere Application Server transport channel framework • HTTP • Session Initiation Protocol (SIP) • Web services such as WS-Addressing non-DMZ proxy server • Low and medium secure DMZ: same function as non-DMZ supported • High secure DMZ only HTTP Conclusion While both the HTTP plug-in and the WebSphere proxy server deliver some overlapping modes of operation and capabilities, the WebSphere proxy server can be the more intelligent solution in many cases. However, "more intelligent" in this case can often times also mean more complex. Many deployments will probably continue to use the HTTP plug-in until they reach a point where improving caching or advanced routing becomes a critical requirement. Choosing the best WebSphere Application Server workload management option © Copyright IBM Corporation 2010. All rights reserved. Page 19 of 20 developerWorks® ibm.com/developerWorks Resources • Know your proxy server basics • Redbook: WebSphere Application Server Network Deployment V6: High Availability Solutions • Getting "Out Front" of WebSphere: The HTTP Server Plugin • Information Center • Setting up the proxy server • Installing a DMZ Secure Proxy Server for IBM WebSphere Application Server • Configuring a DMZ Secure Proxy Server using the administrative console • Installing IBM HTTP Server • Configuring IBM HTTP Server • Installing Web server plug-ins • Plug-ins configuration • IBM developerWorks WebSphere About the authors John Pape John Pape currently works with the WebSphere SWAT Team and focuses on crit-sit support for clients who utilize WebSphere Application Server, WebSphere Portal Server, and WebSphere Extended Deployment. This role requires attention to detail as well and maintaining a “think-out-of-the-box” innovative mindset, all the while assuring IBM customers get the best support possible! Robert Westland Robert Westland is the architect of the WebSphere Application Server Work Load Management(WLM) component. He currently works on the WLM and HA Team at IBM Rochester Minnesota. His focus is on the architecture of the WLM support for the WebSphere Application Server. He has been working in the WebSphere Application Server organization and on the WLM team for 8 years. Choosing the best WebSphere Application Server workload management option Page 20 of 20 © Copyright IBM Corporation 2010. All rights reserved. Tips for working smarter and increasing productivity with WebSphere Integration Developer Skill Level: Intermediate Diana Lau ([email protected]) Software Developer IBM 06 Oct 2010 Dealing with a high number of modules, artifacts, and projects at once in IBM® WebSphere® Integration Developer can be overwhelming at times. However, there are steps you can take and features you can leverage that can help you not only become better organized, but also help you improve build time and increase your productivity as well. This article provides tips to help you make this happen. Introduction This article shows you some valuable hints and tips to help you use IBM WebSphere Integration Developer V7 more efficiently, especially when you are dealing with a large number of modules and artifacts. These tips include different ways to reduce workspace build time and publish time, how to use the Test Client to create test cases and organize them in test projects, and and how to use the cross component trace to make the unit test phase more efficient. In addition, you will learn how to reduce clutter in the work space by maximizing the work space in various editors and how to use the filtering options to filter out unnecessary artifacts. The tips covered here are presented in these major areas: 1. Reducing workspace build time and publish time 2. Testing in the WebSphere test environment 3. Better artifact organization and team collaboration Tips for working smarter and increasing productivity with WebSphere Integration Developer © Copyright IBM Corporation 2010. All rights reserved. Page 1 of 14 developerWorks® ibm.com/developerWorks 4. Maximizing your working space 5. Using the search and filter capabilities 1. Reducing workspace build time and publish time The more artifacts you have in the workspace, the higher the memory consumption and the longer the build time. There are a few ways to reduce workspace build time: a. Close or remove the unused projects b. Turn on the XSD and WSDL validation filtering as needed c. Use the “Do not participate in clean” option in libraries d. Leverage the Build Activities view to control validation and publishing e. Test the XML map locally without deploying the application to the server 1a. Closing or removing the unused projects All the artifacts in open projects are added to the internal index system in WebSphere Integration Developer (hereafter called Integration Developer), which in turn consumes memory and affects build time. To avoid unnecessary high memory usage, close or remove the projects that you do not need. Having multiple roles in a business process management (BPM) project, you might want to consider having different workspaces when working on different parts of the projects. This avoids unnecessary projects being loaded in the workspace. You can use an integration solution to make this process clear and easy. The user can always see all the modules and libraries that are part of the solution and can load or unload parts of it as needed. 1b. Turning on XSD and WSDL validation filtering When dealing with industry schemas, such as standards from Open Travel Alliance (OTA), Association for Cooperative Operations Research and Development (ACORD), or third party schemas, you cannot change the XSD and WSDL files. Therefore, there is no need to validate every time during workspace builds. In the Properties dialog of a module or library, you can specify all the XSD and WSDL files or the groups of namespace prefixes that are not to be validated by selecting Business Integration > XSD and WSDL validation filtering, as shown in Figure 1. You can add your own filters on top of the predefined ones. The options are shown in Figure 2. Tips for working smarter and increasing productivity with WebSphere Integration Developer Page 2 of 14 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® Figure 1. Project properties under Business Integration category Figure 2. Options for XSD and WSDL validation filtering 1c. Using the “Do not participate in Clean” option in Library Similar to the XSD and WSDL validation filtering, you can enable the “Do not participate in Clean” option if you do not want to revalidate, rebuild, and update markers in the files within a library when performing “clean all”. In the Properties dialog of a library, select Business Integration > Participation in Clean. On the right panel, you see the checkbox for this option as shown in Figure 3. Figure 3. Participation in Clean option in Properties dialog 1d. Leveraging the Build Activities view to control validation and publishing The Build Activities view allows you to select workspace activities to run during a build. The “Validate and update deploy code” is the default selection, which is also the recommended one (Figure 4). This means that when you save the changes, the server is not updated even though the affected applications are deployed on the Tips for working smarter and increasing productivity with WebSphere Integration Developer © Copyright IBM Corporation 2010. All rights reserved. Page 3 of 14 developerWorks® ibm.com/developerWorks server. The explicit action of republishing the changes to the server saves the unnecessary time spent on updating the server when the application is not ready to be republished. Figure 4. Build Activities View For more details, see the Build Activities view section in the Integration Developer Information Center. 1e. Testing the XML map The XML map editor tests the mapping locally without starting the server and deploying the module. You can invoke the Test Map function from the toolbar (Figure 5) or the context menu of the map (Figure 6). Figure 5. Test Map toolbar item in XML map editor Figure 6. Test Map menu item Tips for working smarter and increasing productivity with WebSphere Integration Developer Page 4 of 14 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® For more details, refer to the Test XML Maps section in Integration Developer Information Center. 2. Testing in the WebSphere test environment Deploying your application and testing it on the Test Client allows you to quickly verify the components that they are currently developing. In the case where there are components in a module that call out to different services in other modules, there are a few alternatives to offload the WebSphere test environment (WTE): a. Moving applications to a common development test environment b. Increasing the WebSphere test environment heap size c. Organizing tests using the Integration Test Client d. Using cross component trace 2a. Moving applications to a common development test environment For the modules that are only needed for service calls, you may not need to install those applications on the same machine as the WebSphere test environment. That means you may not need to import the modules that are not working in the Tips for working smarter and increasing productivity with WebSphere Integration Developer © Copyright IBM Corporation 2010. All rights reserved. Page 5 of 14 developerWorks® ibm.com/developerWorks workspace. You can set up a common development test environment to deploy those services on a separate server. It not only offloads your own WTE, but you can also improve the build time so that fewer numbers of artifacts are added to the workspace. Another advantage is that each developer can deploy the latest update of the applications to the development test server for other developers to call. 2b. Increasing the WebSphere test environment heap size The WTE is supposed to be used for testing smaller scale of applications. If the default setting of the server’s heap size is not sufficient (that is, when you get OutOfMemoryError when running the applications), you may want to increase the heap size of the server. For more details, see the WebSphere Integration Developer frequently asked questions page. 2c. Organizing tests using the Integration Test Client Use the Integration Test Client in Integration Developer to help organize test cases and to make testing easier. You can learn more test case support from this developerWorks article, Taking component testing to the next level in WebSphere Integration Developer. Once deployed, you can also run the test cases through the web browser without Integration Developer. 2d. Using cross component trace When there are numerous components and modules involved in your BPM solution, it is helpful to trace and identify where the unexpected behavior occurred. Cross component trace can help you in problem determination when your application is not running as expected. To enable the cross component trace, go to the Server Logs view and then select the View Menu icon > Cross-Component Trace State as shown in Figure 7. By default, it is disabled. Figure 7. Enable cross component trace Figure 8 shows a sample output from the cross component trace that involves an SCA component in a module that is calling a component in another module. Figure 8. Sample output of cross component trace Tips for working smarter and increasing productivity with WebSphere Integration Developer Page 6 of 14 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® 3. Better artifact organization and team collaboration This section provides tips on: a. Using shared libraries b. Using sticky notes c. Enhanced team support in mediation flow d. Using the Integration Solution 3a. Using shared libraries Business objects and interfaces are the building blocks in Integration Developer. They are often being referenced in multiple modules. For better reuse, it is always a good idea to put those common artifacts in a library. It also makes the design cleaner. Instead of having multiple business object definitions, which is meant to be the same, located in multiple locations, you only need to make changes in one place by creating a business object in the library and having the modules referencing the library. If the library is selected to be deployed with the module in the dependencies editor, the module is packaged as an EAR and contains a copy of the library JAR file during deploy time. If there are multiple modules referencing the same library, each EAR will have a copy of the library. To reduce the deploy time, you can set up the shared library on the server. Note that when these common artifacts are changed in the library, the server needs to be restarted for changes to be effective. For configuration details about a shared library, refer to this technote. 3b. Using sticky notes Sticky notes serve as reminders to yourself or others, and do not replace the description fields in the properties of the components. You can add notes in the Assembly editor and the Process editor. Tips for working smarter and increasing productivity with WebSphere Integration Developer © Copyright IBM Corporation 2010. All rights reserved. Page 7 of 14 developerWorks® ibm.com/developerWorks Besides adding text, you can add tags and hyperlinks to the note. The “TODO” and “FIXME” tags are predefined Java™ compiler tags. Hence, they appear in the Task view. You an also define hyperlinks as depicted in Figure 9. Figure 9. Sticky note In addition, you can define your own custom tags. This is also done through the Java compiler settings. To do so, switch to Java perspective and then go to the Preferences page. From Java > Compiler > Task Tags, you can add your own (Figure 10). Figure 10. Configure your own tag 3c. Enhanced team support in mediation flow To minimize the chance of managing conflicts with other developers, we recommend that developers work on separate components, which correspond to separate physical resources. When creating a mediation flow, you can use an option to save the mediation flow in a single file or multiple files (Figure 11). If the latter option is selected, a new physical file is created when an operation connection is made. This allows multiple developers to work on different mediation flows in the same mediation flow component. Figure 11. New Mediation Flow wizard Tips for working smarter and increasing productivity with WebSphere Integration Developer Page 8 of 14 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® You can also configure this in the Preferences page by selecting Business Integration > Mediation Flow Editor (Figure 12). Figure 12. Preference to set options for creating mediation flow 3d. Using the Integration Solution Introduced in V6.2, the Integration Solution section in the Business Integration view helps you to organize related modules and libraries. It also shows the relationships (or bindings) with other modules. Other benefits include: • Easier team development. You can check in and check out solution, together with the projects associated with it • Easier to organize documentations. You can add documents related to the solution, such as design and architectural documents. • Easier to load and unload modules that are relevant to the tasks at hand, Tips for working smarter and increasing productivity with WebSphere Integration Developer © Copyright IBM Corporation 2010. All rights reserved. Page 9 of 14 developerWorks® ibm.com/developerWorks while the user still has a full picture of the entire solution. 4. Maximizing your working space In the mediation flow editor, BPEL editor, and Assembly editor, you can collapse the trays to maximize your working space, as shown in Figure 13. Figure 13. Maximize your working space in the Mediation Flow editor Figure 14 shows the screen capture after you collapsed all the trays. Figure 14. Mediation Flow editor after all the trays are collapsed Similarly, you can do the same thing for the BPEL editor and Assembly editor, depicted in Figure 15. Figure 15. Maximize your workspace in the BPEL editor Tips for working smarter and increasing productivity with WebSphere Integration Developer Page 10 of 14 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® In the Test Client, you can also maximize the pane, depending on the current task (Figure 16). Figure 16. Maximize different pane in the Test Client 5. Using the search and filter capabilities The Open Artifact dialog and Artifact Search dialog help you to find a specific artifact more easily. You can open the Open Artifact dialog from the toolbar (Figure 17). All the artifacts that you see in the Business Integration view are available for selection. Figure 17. Open Artifact toolbar item In the Search dialog, there is a Business Integration Search tab as shown in Tips for working smarter and increasing productivity with WebSphere Integration Developer © Copyright IBM Corporation 2010. All rights reserved. Page 11 of 14 developerWorks® ibm.com/developerWorks Figure 18. You can limit your search based on the type, name, or namespace of the artifacts that you are looking for. Figure 18. Search dialog 5a. Using the References view The References view shows the relationship between an object selected in the Business Integration view and the artifacts that it references. Therefore, it saves you time to navigate through the artifacts to find out their dependencies. Take the example shown in Figure 19. By selecting MyBO1 in the Business Integration view, you can quickly see that it references MyChildBO, which is a business object. This is being referenced by “MyInf1”, which is an interface. Figure 19. Business Integration view with References view Tips for working smarter and increasing productivity with WebSphere Integration Developer Page 12 of 14 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® Conclusion This article provided hints and tips that can potentially improve your productivity when using WebSphere Integration Developer. Reducing workspace build time and publish time are one of the key areas that you can look at when you are dealing with a large number of artifacts and projects. You can see a significant improvement in the build time when adopting those tips. This article also discussed how to use the WebSphere test environment, the Test Client, and the cross component trace capability to make the unit testing effort more efficient. In addition, better artifact organization and maximizing your workspace space inside Integration Developer can also help your productivity. Acknowledgements The author would like to thank Phil Coulthard and Grant Taylor for their technical review of this article. Tips for working smarter and increasing productivity with WebSphere Integration Developer © Copyright IBM Corporation 2010. All rights reserved. Page 13 of 14 developerWorks® ibm.com/developerWorks Resources Learn • WebSphere Integration Developer V7 Information Center • Rational Application Developer performance tips • WebSphere Integration Developer Information Center: Build Activities view • WebSphere Integration Developer Information Center: Testing XML Maps • Team development using CVS • XML mapping in WebSphere Integration Developer, Part 1 • Taking component testing to the next level in WebSphere Integration Developer • Using shared libraries on WebSphere Process Server • Frequently asked questions (FAQs) about WebSphere Integration Developer Discuss • WebSphere Integration Developer discussion forum About the author Diana Lau Diana Lau is a Software Developer on the WebSphere Business Process Management SWAT team at the IBM Toronto Software Lab, Canada. She works closely with customers to resolve technical issues and provide best practices for implementing BPM solutions. Tips for working smarter and increasing productivity with WebSphere Integration Developer Page 14 of 14 © Copyright IBM Corporation 2010. All rights reserved. Exploring the WebSphere Application Server Feature Pack for SCA, Part 8: Java EE support in the Feature Pack for SCA Skill Level: Intermediate Anbumunee Ponniah ([email protected]) Software Engineer IBM Chao M Beck Software Engineer IBM Vijai Kalathur ([email protected]) Software Engineer IBM 06 Oct 2010 This article describes the integration of Java™ EE support in the IBM® WebSphere® Application Server Feature Pack for Service Component Architecture (SCA). The feature pack supports use of Java EE archives as SCA component implementations, the consumption of SCA exposed services from Java EE components, and the exposure of stateless session EJB services as SCA services with support for rewiring those services. Introduction Java Platform, Enterprise Edition (Java EE) is the most prevalent and widely adopted standard for enterprise application development using the Java programming language. While the Java EE specification provides a rich set of technologies, it lacks support for extensible component implementation technologies, for extensions to abstract transport and protocol assembly, and for deploying components that transcend application boundaries. As such, it falls Java EE support in the Feature Pack for SCA © Copyright IBM Corporation 2010. All rights reserved. Page 1 of 10 developerWorks® ibm.com/developerWorks somewhat short of supporting a true service-oriented architecture (SOA). The IBM WebSphere Application Server Feature Pack for Service Component Architecture (SCA) extends its own assembly, implementation type, deployment, and quality of service concepts to a Java EE application within that application's context. This enables the use of Java EE components as service component implementations, and also makes it possible to consume SCA artifacts, such as services and properties, from Java EE modules using SCA annotations. Additionally, it enables the ability to expose Enterprise JavaBean™ (EJB) services as SCA services, and to rewire EJB references. Java EE archives as SCA component implementations There are two basic scenarios for using Java EE archives as SCA component implementations: • The first is a non-SCA-enhanced scenario, in which a Java EE archive is made available in an SCA domain for use by SCA components using other implementation technologies. • The second is an SCA-enhanced scenario, in which Java EE modules can make use of the benefits of an SCA, such as rewiring, defining SCA properties, defining references to other SCA services in the domain, and using dependency injection. These two types of integration scenarios are illustrated in Figure 1. Figure 1. Java EE integration scenarios Non-SCA-enhanced scenario A Java EE archive representing a Java EE application and containing Java EE modules (such as EJB and Web modules) can be used as an SCA component Java EE support in the Feature Pack for SCA Page 2 of 10 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® implementation participating in an SCA composite. The SCA feature pack supports an external EAR contribution, in which the Java EE archive is packaged and deployed outside of the SCA contribution. In the simplest scenario, if you have a Java EE archive named HelloJeeEar.ear and an SCA contribution JAR named HelloJeeSca.jar with a deployable composite, then the Java EE archive can be used as a component implementation in the SCA contribution by means of the syntax shown in Listing 1. Listing 1. Sample SCA composite <<?xml version="1.0" encoding="UTF-8"?> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://foo" name="HelloJeeScaServiceComposite"> <component name="HelloJeeComponent"> <implementation.jee archive="HelloJeeEar.ear"/> </component> <component name="MyScaComponent"> <implementation.java class=”sca.jee.HelloJeeScaServiceImpl”/> <service name="HelloJeeScaService"> <interface.java interface="sca.jee.HelloJeeScaService"/> </service> </component> </composite> In accordance with the OSOA (Open Service Oriented Architecture) Java EE Integration specification (see Resources), the derived component type will contain these services and references: • Each EJB 3 business interface with the unqualified name intf of a session bean bean translates into a service by the name bean_intf. • Each EJB 3 reference with the name ref of a session bean bean translates into an SCA reference with the name bean_ref. In the above example, if HelloJeeEar.ear contains an EJB module HelloJeeEjb.jar that has a session bean HelloJeeEjb with a remote business interface HelloJeeSBeanRemote, then the name of the derived service will be HelloJeeEjb_HelloJeeSBeanRemote. The service interface derived will consist of all the methods of the EJB business interface. The derived services can be referred to in other SCA components, just as with any other SCA service. It is important to note that the service interface will be remotable if and only if it is derived from the bean's remote business interface. Thus, without any need to change the implementation code, the EJB services and EJB references from a Java EE archive can become part of a SCA composite. SCA-enhanced scenario Java EE support in the Feature Pack for SCA © Copyright IBM Corporation 2010. All rights reserved. Page 3 of 10 developerWorks® ibm.com/developerWorks The SCA feature pack does not support the use of a Java EE archive as an SCA contribution, but does support the use of such an archive as a component implementation within a deployable composite in an SCA contribution; such an implementation is an SCA-enhanced scenario. In such an implementation, the Java EE archive must include a distinguished composite file named application.composite in its META-INF directory, as illustrated in Figure 2. Figure 2. application.composite When such a Java EE archive is used as an SCA component implementation within the implementation.jee directive, the SCA runtime automatically includes the artifacts specified in such a composite when deriving the component type. In order to expose any EJB services as SCA services, or to consume SCA services, application.composite needs to include components with EJB or Web implementation types using the deployable EJB and Web modules packaged in the same archive. For example, consider a Java EE archive named HelloJeeEnhancedEar.ear containing an EJB module named HelloJeeEnhancedEjb.jar, which in turn contains a stateless session bean named HelloJeeEnhancedSBean and a Web module named HelloJeeEnhancedWeb.war. The archive might have the application composite shown in Listing 2. Listing 2. application.composite <?xml version="1.0" encoding="UTF-8"?> <composite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:foo="http://foo" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="http://www.osoa.org/xmlns/sca/1.0 http://www.osoa.org/xmlns/sca/1.0" name="EnhancedEarComposite" targetNamespace="http://foo" autowire="false"> <service name="HelloJeeEnhancedSBean_HelloJeeEnhancedSBeanRemote" promote="EnhancedSbeanComponent/HelloJeeEnhancedSBean_HelloJeeEnhancedSBeanRemote"> <binding.sca/> </service> <reference name="sbean2" promote="EnhancedSbeanComponent/sbean2" target="HelloJeeScaComponent/HelloJeeScaService"> <interface.java interface="sca.jee.HelloJeeScaService" /> </reference> <property name="propertyejb" <property name="propertyweb" Java EE support in the Feature Pack for SCA Page 4 of 10 type="xsd:string">EJBIBM</property> type="xsd:string">WEBIBM</property> © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® <component name="EnhancedSbeanComponent"> <implementation.ejb ejb-link="HelloJeeEnhancedEjb.jar#HelloJeeEnhancedSBean"/> <service name="HelloJeeEnhancedSBean_HelloJeeEnhancedSBeanRemote"> <interface.java interface="sca.jee.HelloJeeEnhancedSBeanRemote" /> </service> <reference name="sbean2"> <interface.java interface="sca.jee.HelloJeeScaService" /> </reference> <property name="propertyejb" type="xsd:string">IBMEJB</property> </component> <component name="EnhancedWebComponent"> <implementation.web web-uri="HelloJeeEnhancedWeb.war"/> <property name="propertyweb" type="xsd:string">IBMWEB</property> </component> </composite> In Listing 2, the individual components specify the SCA services and references. If any of the services and references defined in the components in the application composite need to be exposed to the SCA domain via the component that implements this Java EE archive, they must be promoted from within the application composite. Any properties needed by individual modules must also be defined at the composite level. In the above example, the SCA property named propertyweb will have a value of WEBIBM and not IBMWEB in the derived component. The use of application.composite enables the EJB services exposed as SCA services to now be rewired to SCA-compatible bindings such as binding.ws and binding.jms. The external SCA contribution using this Java EE archive as an SCA component implementation would look similar to Listing 3. Listing 3. An external SCA contribution in application.composite ... <component name="HelloJeeEnhancedComponent"> <implementation.jee archive="HelloJeeEnhancedEar.ear"/> <service name="HelloJeeEnhancedSBean_HelloJeeEnhancedSBeanRemote"> <interface.java interface="sca.jee.HelloJeeEnhancedSBeanRemote" /> <binding.ws/> </service> <reference name="sbean2" target="HelloJeeScaComponent/HelloJeeScaService"> <interface.java interface="sca.jee.HelloJeeScaService" /> </reference> </component> ... Figure 3 illustrates how these components fit together in a typical Java EE implementation. Figure 3. Java EE as an SCA implementation Java EE support in the Feature Pack for SCA © Copyright IBM Corporation 2010. All rights reserved. Page 5 of 10 developerWorks® ibm.com/developerWorks The SCA references and properties can be accessed in EJB and Web modules through annotations that are injected with the defined values at run time. Listing 4 provides an example. Listing 4. Accessing SCA references and properties through annotations ... import javax.ejb.Stateless; import org.osoa.sca.annotations.*; ... @Stateless // EJB annotation public class AccountServiceImpl implements AccountService { @Reference protected Brokerage backend; // SCA reference @Property protected String currency; // SCA property @Context protected SCAContext context; // SCA context public AccountReport getAccountReport(String customerId) { acctValue BigDecimal = Brokerage.getAccountValue(customerID,“IBM”; // use injected reference if (currency != “S DOLLARS” { // use injected property moneyChangerService = context.getService(moneyChanger.class,”oneyExchange”; // use injected context acctValue = moneyChangerService(current,acctValue); // invoke SCA service } return backend(customerId, acctValue); } Another interesting aspect of defining SCA references through the application.composite file is the ability to override EJB references with compatible SCA references. As long as the interface of the SCA reference matches that of the EJB reference, the SCA run time injection will override that EJB. For example, as shown in Listings 5 and 6, the EJB reference sbean2 can be overridden by an SCA reference defined in application.composite. The bean class includes the annotation in Listing 5, and the application.composite file includes the <reference> tag in Listing 6. Java EE support in the Feature Pack for SCA Page 6 of 10 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® Listing 5. Annotation for overriding EJB references @Stateless public class HelloJeeEnhancedSBean implements HelloJeeEnhancedSBeanRemote, HelloJeeEnhancedSBeanLocal { @EJB HelloJeeReferencedBeanRemote sbean1; @EJB HelloJeeReferencedBeanRemote sbean2; //This will be overridden with a SCA reference offering same operation /** Listing 6. <reference> tag for overriding EJB references .... <reference name="sbean2" promote="EnhancedSbeanComponent/sbean2" target="HelloJeeScaComponent/HelloJeeScaService"> <interface.java interface="sca.jee.HelloJeeScaService" /> </reference> .... In the above example, the injected value for sbean2 would be that of the SCA reference sbean2 and not the EJB reference of the same name. Notice that SCA treats references as unique across the composite when handling promoted references. You should therefore pay attention to cases where EJB references with the same name resolve to different EJB modules. Deployment If you intend to expose EJB services and references as SCA services and references, and are happy with the auto-generated names of the services and references, no changes are needed in your current implementation. If, however, you want to limit the services exposed or want to rewire EJB references and services, then the Java EE archive should at minimum have an application.composite file. Only the services and references promoted in that composite file would then be used when the SCA runtime derives the component type. If you want the Java EE modules to access SCA artifacts, only then would the implementation need to be changed. For a user with a Java EE archive, the assembly and deployment steps in a WebSphere Application Server environment would be: 1. Create a new SCA JAR with a deployable composite that uses the Java EE archive as its component implementation using implementation.jee. 2. Import both the Java EE archive and the SCA JAR as assets. Java EE support in the Feature Pack for SCA © Copyright IBM Corporation 2010. All rights reserved. Page 7 of 10 developerWorks® ibm.com/developerWorks 3. Create a business-level application (BLA) and add the Java EE archive and SCA JAR to the BLA as deployed assets. The order is important: all Java EE archives used in an SCA contribution as SCA component implementations must be deployed before the SCA contribution is deployed. 4. Start the BLA. Security The Java EE platform supports authorization and security identity policies. The support security QoS is enforced by the underlying Java EE container. The use of authorization is supported in both SCA-enhanced and non-enhanced Java EE archives. The authorization and security identity policies for EJBs that are referenced by the implementation.jee element are enforced by specifying the security constraints in the EJB deployment descriptor (ejb-jar.xml) in the EAR. These are used in conjunction with the interaction policies on the bindings to authenticate and authorize access to the Java EE components. Administrative and application security both need to be enabled in order for security roles be enforced. Any SCA policy sets attached to an implementation.jee component with security and run-as polices will be ignored. Transactions Transaction support for services defined in an implementation.jee component are handled by the Java EE container. Transaction attributes for the service are specified in the EJB deployment descriptor (ejb-jar.xml) in the EAR. To find a description of how SCA intents map to Java EE transaction attributes, see section 5.3 of the SCA Java EE Integration Specification, titled Mapping of EJB Transaction Demarcation to SCA Transaction Policies (see Resources). To propagate or suspend transactions for references in an implementation.jee component, specify the required SCA transaction intents in the composite file. Conclusion There are a number of benefits to integrating Java EE with SCA. • EJB services can be exposed as SCA services and then re-wired over various wire formats. • EJB module EJBRefs can be rewired using SCDL without changing the underlying Java EE artifacts. Java EE support in the Feature Pack for SCA Page 8 of 10 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® • An SCA programming model can be used to invoke business services in Java EE components. • Remotable services can be made available as SCA services over the SCA default binding without the need for defining an SCDL. • Services can be intermixed using other implementation types, such as implementation.java and implementation.wsdl. In summary, the WebSphere Application Server Feature Pack for SCA enables Java EE programmers and architects to transcend differences in implementation technologies and leverage a service component architecture with little or no changes to their implementation, making it easier for them to take advantage of existing code while exploring an SCA. Java EE support in the Feature Pack for SCA © Copyright IBM Corporation 2010. All rights reserved. Page 9 of 10 developerWorks® ibm.com/developerWorks Resources • SCA Service Component Archiitecture: Java EE Integration Specification. • IBM Education Assistant: IBM WebSphere Application Server V7.0 Feature Pack for Service Component Architecture. • WebSphere Application Server Information Center. • Other articles in this series • IBM developerWorks WebSphere About the authors Anbumunee Ponniah Anbumunee Ponniah is a developer/tester involved in implementing JavaEE support in SCA Feature pack. Anbu has a rich background covering many technical areas ranging from Unix internals to application programming. He has previously been a technical lead for Java class libraries in IBM's Java technology center. Chao M Beck Chao Beck is a technical lead for the feature pack for Service Component Architecture (SCA) early program. She has long been a member of the Application Integration Middleware early programs team responsible for the execution of early programs for IBM WebSphere Application Server products. She handles the development and delivery of education for new product functions and the provision of customer support during pre-GA (early) programs and post-GA (customer acceleration) programs. Vijai Kalathur Vijai Kalathur is part of the SCA Feature Pack QoS team. Since joining IBM in 2005 he has worked on the WebSphere Application Server for z/OS security team and the SCA Feature Pack team. He has worked on various components of the SCA Feature Pack including admin, security, transactions, and JMS binding. Java EE support in the Feature Pack for SCA Page 10 of 10 © Copyright IBM Corporation 2010. All rights reserved. The Support Authority: Running WebSphere Application Server as a Windows service Skill Level: Introductory Alain Del Valle ([email protected]) WebSphere Application Server L2 Team IBM Dr. Mahesh Rathi ([email protected]) WebSphere Application Server SWAT Team IBM 06 Oct 2010 IBM® WebSphere® Application Server can run as a Windows® service. A Windows service can run under a local user account, a domain user account, or the LocalSystem account. This article will help a domain administrator set up a WebSphere Application Server to run as a Windows service under a domain user account . This process involves the domain administrator logging in to the local machine and providing the correct rights for the domain user. In each column, The Support Authority discusses resources, tools, and other elements of IBM® Technical Support that are available for WebSphere® products, plus techniques and new ideas that can further enhance your IBM support experience. This just in... As always, we begin with some new items of interest for the WebSphere community at large: • Check out the IBM Conferences & Events page for a list of upcoming conferences. The IBM European WebSphere Technical Conference is a 4.5 day event to be held 11-15 October 2010 in Düsseldorf, Germany. This event combines the WebSphere and Transaction & Messaging Running WebSphere Application Server as a Windows service © Copyright IBM Corporation 2010. All rights reserved. Page 1 of 14 developerWorks® ibm.com/developerWorks Conferences of previous years into one seamless agenda, offering two great conferences for the price of one. This year’s conference will be co-located with the Portal Excellence Conference, dedicated to portal business solutions and technical strategies.. • Earlier this year, the IBM Support Portal was named one of the Top Ten Support Sites of 2010 by the Association of Support Professionals. Have you tried the IBM Support Portal yet? All IBM software products are now included, and all software product support pages have been replaced by IBM Support Portal. See the Support Authority's Introduction to the new IBM Support Portal for details. • Learn, share, and network at the IBM Electronic Support Community blog on developerWorks. • Check out the new Global WebSphere Community at websphereusergroup.org. Customize the content on your personalized GWC page and connect to other "WebSpherians" with the same interests. • Several exciting webcasts are planned in through October at the WebSphere Technical Exchange. Check the site for details and become a fan on Facebook! Continue to monitor the various support-related Web sites, as well as this column, for news about other tools as we encounter them. And now, on to our main topic... Leveraging Windows services A Windows service can be run in the security context of a local user account, a domain user account, or the LocalSystem account. To help decide which account to use, an administrator will install the service with the minimum set of permissions required to perform the service operations, will typically create a domain user account for the service, and grant that account the specific access rights and privileges required by the service at run time. There can be many reasons you might want to do this. Windows services typically live on each local machine and can be controlled by a local user or a domain user. In some cases, it can be beneficial to set up the service to run as a domain user. For example, if multiple machines are set up to run IBM WebSphere Application Server as a service, a domain user account can be set up to control all those services. If a password ever needs to be changed, it can be modified in just the domain controller for that user. If local system users were to run the services, the password would need to be changed in every machine instead of just once for the user in the domain controller. When the password changes for a user that is running a Windows service, the only way to get the service to work again is to update the service and Running WebSphere Application Server as a Windows service Page 2 of 14 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® repeat all the steps. The task of setting up WebSphere Application Server to run, as a Windows service under a domain user account, can be complicated. This article explains the general information you need to accomplish this setup in Windows Server 2003. You will learn how to create the Windows service using the WASServiceCmd utility and how to change the service to log on as the domain user account. For the purpose of this article, it is assumed that the local machine is already part of the domain. Be aware that once the machine is added to the domain, the group for Domain Admins is added by default on the local machine, shown in Figure 1. We’ll refer to two different users located in the Active Directory of the domain controller: • alainadmin: A domain administrator in the domain controller, shown in Figure 2. • alainuser: A domain user with basic user rights, not an administrator in the domain controller. This is the user for which the setup is being run, shown in Figure 3. Figure 1. Domain Admins group gets added by default when machine is added to domain Running WebSphere Application Server as a Windows service © Copyright IBM Corporation 2010. All rights reserved. Page 3 of 14 developerWorks® ibm.com/developerWorks Figure 2. Shows alainadmin is a member of Domain Admins group Running WebSphere Application Server as a Windows service Page 4 of 14 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® Figure 3. Shows alainuser is a member of Domain Users group Running WebSphere Application Server as a Windows service © Copyright IBM Corporation 2010. All rights reserved. Page 5 of 14 developerWorks® ibm.com/developerWorks Specific rights are required by the operating system to be able to run the domain user. To set up and run this function on a Microsoft Windows operating system, the user must belong to the administrator group and have these advanced user rights: • Act as part of the operating system. • Log on as a service. To demonstrate, let’s step through the procedure: Running WebSphere Application Server as a Windows service Page 6 of 14 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® 1. Log on to the local machine with a user that has Domain Administrator rights (alainadmin). 2. Add the domain user to the Administrators group of the local machine (alainuser), shown in Figure 4: a. Right click My computer and select Manage. In the directory tree, navigate to Under Local Users and Groups > Groups. Figure 4. Shows path to get to Administrators Group in Windows 2003 b. To add the user to the Administrators group, double click Administrators, then select Add. c. Click Advanced. If prompted for username and password, use the credentials for the domain administrator in the domain controller (alainadmin). d. Click Find Now. The users from the domain will display. Add your domain user to the group of Administrators (Figure 5), then click OK and Apply. Figure 5. Shows alainuser getting added to the Administrators group of the local machine Running WebSphere Application Server as a Windows service © Copyright IBM Corporation 2010. All rights reserved. Page 7 of 14 developerWorks® 3. ibm.com/developerWorks Add the two required user rights assignments: a. Click the Windows Start button and navigate to Settings > Control Panel > Administrative tools > Local Security Policy. b. Select User Rights Assignment in the left window (if not already selected) and then double-click Act as part of the operating system (Figure 6). Figure 6. Security setting: Act as part of the operating system c. Click Add User or Group. Select the user and click OK to add the Running WebSphere Application Server as a Windows service Page 8 of 14 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® user to the policy (Figure 7). Figure 7. Add the local user alainuser to the security policy 4. Repeat the previous step to the user to the Log on as a service policy (Figure 8). Figure 8. Local security settings 5. Log off Domain Admin (alainadmin) and log in as the Domain user (alainuser). 6. Run the WASServiceCmd utility to create the service. Earlier this year, Running WebSphere Application Server as a Windows service © Copyright IBM Corporation 2010. All rights reserved. Page 9 of 14 developerWorks® ibm.com/developerWorks The Support Authority presented the WASService command. You can download the utility from the Using WASServiceCmd to create Windows services for WebSphere Application Servers Technote. Follow the instructions to unzip the tool to the WebSphere_root/AppServer/bin directory. WASServiceCmd.exe is a front end for WASService.exe, which is shipped with WebSphere Application Server. The creation of a service takes many parameters and this utility will help minimize any human errors that can occur during service creation. 7. Change the service to log on as the domain user. Click the Windows Start button and navigate to Settings > Control Panel > Administrative tools > Services. 8. Locate the service that was created. Double-click the service, select the Log on tab, and change the Log on as selection to This account. Figure 9. Shows the Domain user alainuser becoming Log on as Running WebSphere Application Server as a Windows service Page 10 of 14 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® The service should now be working with the domain user alainuser. Shown in Figure 9, the log on values show AUSTINL2\alainuser. This shows that the service is now being controlled by a domain user account. Conclusion This article described how the domain administrator for Windows Server 2003 can set up a user that lives in the domain controller, and has the bare minimum user rights, but runs the service on the local machine for WebSphere Application Server. This consists of the domain administrator logging in to the local machine and providing the correct rights for the domain user to run the Windows service. Running WebSphere Application Server as a Windows service © Copyright IBM Corporation 2010. All rights reserved. Page 11 of 14 developerWorks® Running WebSphere Application Server as a Windows service Page 12 of 14 ibm.com/developerWorks © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® Resources Learn • Information Center: WASService command • The Support Authority: Take the confusion (and errors) out of creating Windows services for WebSphere Application Server • Video: An imated demonstration of the WASServiceCmd tool (Flash) • Guidelines for Selecting a Service Logon Account • The Support Authority: If you need help with WebSphere products, there are many ways to get it • IBM Software product Information Centers • IBM Software Support Web site • IBM Education Assistant • IBM developerWorks • IBM Redbooks • WebSphere Software Accelerated Value Program Get products and technologies • Using WASServiceCmd to create Windows services for WebSphere Application Servers • IBM Software Support Toolbar • IBM Support Assistant Discuss • Forums and newsgroups • Java technology Forums • WebSphere Support Technical Exchange on Facebook • Global WebSphere Community on WebSphere.org • Follow IBM Support on Twitter! • WebSphere Electronic Support • WebSphere Application Server information • WebSphere Process Server Running WebSphere Application Server as a Windows service © Copyright IBM Corporation 2010. All rights reserved. Page 13 of 14 developerWorks® ibm.com/developerWorks • WebSphere MQ • WebSphere Business Process Management • WebSphere Business Modeler • WebSphere Adapters • WebSphere DataPower Appliances • WebSphere Commerce • IBM Support Assistant Tools About the authors Alain Del Valle Alain Del Valle was born in Cuba and moved to Miami, Florida in 1984. Alain received a B.S in Electrical Engineering in 2003 from Florida International University. He joined the WebSphere Application Server Team in 2003 in Austin, Texas and is a senior member of the WASADM team. He leads the lab for level 2 Support. Dr. Mahesh Rathi Dr. Mahesh Rathi has been involved with WebSphere Application Server product since its inception. He led the security development team before joining the L2 Support team, and joined the SWAT team in 2005. He thoroughly enjoys working with demanding customers, on hot issues, and thrives in pressure situations. He received his PhD in Computer Sciences from Purdue University and taught Software Engineering at Wichita State University before joining IBM. Running WebSphere Application Server as a Windows service Page 14 of 14 © Copyright IBM Corporation 2010. All rights reserved. Innovations within reach: There's a new purple appliance in town Frequently asked questions about the WebSphere DataPower XC10 elastic caching solution Skill Level: Introductory Charles Le Vay ([email protected]) Senior Software Architect IBM 06 Oct 2010 The IBM® WebSphere® DataPower® XC10 Appliance is a quick, easy, and cost-effective way to add an elastic data caching tier to enhance your application infrastructure. To help introduce you to the capabilities of this new appliance, which combines the robust DataPower hardware appliance platform with IBM's state of the art distributed caching technology, here are the top ten frequently asked questions about this new product. Each installment of Innovations within reach features new information and discussions on topics related to emerging technologies, from both developer and practitioner standpoints, plus behind-the-scenes looks at leading edge IBM® WebSphere® products. Resistance is futile The IBM WebSphere DataPower XC10 Appliance is designed to be the drop-in caching tier for your IBM WebSphere Application Server infrastructure. Unveiled at IBM’s IMPACT conference in early May 2010, the XC10 appliance is a combination of the robust DataPower hardware appliance platform and IBM's state of the art distributed caching technology. And, like the IBM WebSphere CloudBurst™ Appliance, it is also purple, so how could you not want one? There's a new purple appliance in town © Copyright IBM Corporation 2010. All rights reserved. Page 1 of 8 developerWorks® ibm.com/developerWorks The XC10 appliance has only been generally available since the end of June, and so this article is meant to help acquaint you with its impressive overall capabilities by answering some of the most frequently asked questions about the product. The top ten things that you might want to know most about the XC10 appliance are: 1. What is an XC10 appliance? The WebSphere DataPower XC10 Appliance is an elastic caching solution in a box. Each XC10 appliance has 160GB of hardened memory. By design, it is easy to install, configure, and manage. The XC10 appliance provides a quick and easy way to integrate a caching tier into your enterprise infrastructure. The data caching tier is inserted behind the application server tier. The purpose of the data caching tier is to provide scalable, fault tolerant, coherent data grids for your application server tier. Data grids are the containers used to store cacheable application data. The XC10 appliance can store multiple data grids. A grouping of XC10 appliances is called a collective. When a collective contains more than one XC10 appliance, one or more replicas of the data grids are created and distributed across a collective. Any change to a data grid is persisted across all of the replicas of that data grid. As XC10 appliances are added or removed from the collective, the data grids and replicas are automatically redistributed across the collective. The monitoring, management, and placement of data grids and replicas is key to the reliability and scalability of an elastic data grid. 2. What can the XC10 appliance do for me? It’s all about the cache. WebSphere Application Server (along with other WebSphere products) supports both dynamic cache based optimizations and HTTP session persistence for performance enhancement, scalability, and high availability. In particular, the XC10 appliance further enhances these particular optimizations by offloading the application server cache memory requirements and disk usage for dynamic cache and HTTP session persistence. In addition, applications using the IBM WebSphere eXtreme Scale ObjectMap APIs can utilize the XC10 appliance data cache to store serializable objects. The XC10 supports three types of data grids: • Simple data grids store simple key-value pairs. • Session data grids store HTTP session management data. • Dynamic cache grids store cacheable objects from applications that utilize the WebSphere dynamic cache APIs or container-based caching. 3. Why would I want or need an XC10 appliance? The short answer is because the XC10 appliance saves you money. There's a new purple appliance in town Page 2 of 8 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® In a traditional application server environment, cache memory is contained within each application server instance. The cache occupies the same addressable memory space as the applications. Therefore, there is a limit to cache size. If the cache occupies too much memory, it can actually degrade the performance of the application. Because cache is contained within an application server instance, if you have several application server instances configured in a cluster, then each one contains a cache and these caches will eventually all contain the same copies of the cached application data. The copies of the data are determined to be fresh or stale based on communication of invalidation messages. The greater the number of server instances, the greater amount of invalidation chatter is required to keep the cached data fresh among the server instances. Additionally, high-speed disks or databases (or both) are typically required to increase the size of the cache, or for high availability. The introduction of an elastic data grid into your enterprise infrastructure can dramatically reduce the memory footprint required for each application server instance. In a virtualized environment, this memory could be used to support additional virtualized servers, thus improving the utilization of the physical hardware. Data grids provide a single coherent cache shared by all of the application server instances in a cluster. Therefore, the data is always fresh because all of the application instances see the same single copy in the cache. This removes all of the invalidation chatter in traditional clustered application server architecture and can result in higher transactional performance. Since the primary characteristics of a data grid are scalability and high availability, high-speed disks and databases used exclusively for persistence are no longer needed in most cases. For simple grids, however, a database is still required for primary storage. Additionally, because elastic data grids scale in a linear fashion, there is virtually no limit to their size. With a group of XC10 appliances, you can easily build very large data grids. The larger the data grid, the more cacheable data you can store, thus significantly reducing costly redundant transactions because the requested data is most likely already in the very large data grid. In summary, elastic data grids improve hardware utilization, reduce costly redundant transactions, and eliminate the need for a high speed disk and database used for persistence. Altogether, these improvements can result in significant cost savings. 4. Do I need to install code to use the XC10 appliance? Yes, you will need to download the (free) WebSphere eXtreme Scale client from the IBM Support Portal. You can either install the client standalone or it can be embedded for integration with WebSphere Application Server. The standalone installation supports only simple data grids. The embedded installation is required for HTTP session data grid and dynamic cache data grid support. (The embedded installation also supports simple grids.) There's a new purple appliance in town © Copyright IBM Corporation 2010. All rights reserved. Page 3 of 8 developerWorks® ibm.com/developerWorks If you choose the embedded installation, you must augment your existing WebSphere Application Server profiles once the installation has successfully completed. Following profile augmentation, you will then be able to choose the XC10 appliance as an option for HTTP session data grid configuration or dynamic cache data grid configuration in the WebSphere Application Server administrative console. 5. Do I need to write any code to use the XC10 appliance? You do not need to write any additional code for HTTP session caching or for dynamic cache support using the XC10 appliance. For HTTP session caching, you simply configure your application to use the XC10 appliance using the WebSphere Application Server administration console. For dynamic cache support, if your application already leverages the dynamic cache using the dynamic cache APIs, or you use container-level dynamic cache support in WebSphere Application Server, no additional code is required. In order to configure WebSphere Application Server to use the XC10 appliance as the dynamic cache provider, you must first specify a catalog service running on the appliance by creating a catalog service domain in your WebSphere Application Server. Then, to create the data grid on your appliance, you either run the provided dynaCfgToAppliance script or manually create the data grid using the XC10 appliance browser-based user interface. You will need to define the XC10 appliance as the dynamic cache provider using the WebSphere Application Server administrative console, configure the replication settings, and finally add a topology custom property for the cache instance you want to modify. For simple data grids, whether using the standalone client or embedded WebSphere Application Server client, you must add code to your application that uses the WebSphere eXtreme Scale ObjectMap APIs to perform simple create, retrieve, update, and delete (CRUD) operations on the simple data grid. 6. What if I need a bigger cache? After you have realized the benefits of adding a data grid to your infrastructure by deploying a WebSphere DataPower XC10 Appliance, you will probably want to add another appliance for scalability and high availability. The beauty of an elastic data grid is that it scales in a linear fashion. Therefore, by adding another appliance, you grow your data grid capacity by another 160GB. Whenever you need more capacity, simply add another appliance. If you need more servers to support a higher access load, you grow your grid over multiple appliances. To deploy an additional XC10 appliance, you must add it to a collective. The process of adding another appliance into a collective -- appropriately termed "assimilation" -will wipe out any existing data grids on the assimilated appliance. To complete the assimilation, the members of the collective will evenly redistribute the data grids and There's a new purple appliance in town Page 4 of 8 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® create replicas across the updated collective. In a collective, any update or change to a data grid is persisted across all other appliances in the collective containing replicas for that data grid. (If you are familiar with the "Star Trek" television series, then the terms collective and assimilation might also be familiar to you. Whether it's a coincidence or not that these same terms are used to describe XC10 appliance concepts, the analogies between the two are valid.) 7. How does an XC10 appliance fit into a highly available architecture? High availability is fundamental to the architecture and design of data grid technology. Of course, from a hardware perspective, you must have more than one XC10 appliance to avoid having a single point of failure. By creating a collective of more than one XC10 appliance, data grid replication is automatically enabled. Data grid replication is the critical component to the self-healing nature of elastic data grids. For each primary data grid, a replica data grid is created on an appliance that does not contain the primary data grid. If there is a failure on the appliance that contains the primary data grid, the replica data grid is promoted to primary data grid. A new replica is automatically created on another available appliance in the collective. In a failover situation, primary and replica data grids are automatically redistributed across the remaining appliances in the collective. The critical component of the collective responsible for high availability failover is the catalog server. The catalog server keeps track of the location of all of the primary and replica grids in the collective. A catalog server runs on each appliance in the collective with a limit of three catalog servers per collective. The catalog service is the communication between catalog servers. The catalog servers coordinate the placement of the primary and replica grids across the collective. For finer granularity in defining your data grid a high availability architecture, each appliance in a collective can be associated with a physical location, called a zone. Zones can represent physical rack location, room number, data center location, and so on. Therefore, it is possible to associate groups of XC10 appliances in a collective with specific locations for high availability reasons, such as power grid failover, network failover, or data center failover. For high availability best practices, a collective should span several zones. Zones help the catalog service determine placement of data grids such that primary and replica data grids are placed in different zones. If a failure occurs in one zone, the replicas in the working zones are promoted to primaries and new replicas are created on other appliances in the collective in the other working zones. When the failed zone comes back online, the primary and replica data grids are redistributed among all of the available zones by the catalog service to maximize high availability. 8. Is the XC10 appliance secure? There's a new purple appliance in town © Copyright IBM Corporation 2010. All rights reserved. Page 5 of 8 developerWorks® ibm.com/developerWorks The XC10 appliance is absolutely secure on several levels. It is built on the hardened, tamper-proof DataPower platform. If someone tries to open the appliance and triggers the internal intrusion detection switch, the XC10 appliance cannot be powered back on until it is sent back to IBM to be reset. The XC10 appliance is not a general-purpose computing platform. It provides no access to the operating system thru a command shell, nor does it provide any way to upload and execute user code or user scripts. You can only upload signed trusted firmware updates to the XC10 appliance. Finally, the XC10 appliance provides fine-grained user and user group permissions for administrative tasks and data grid security. When data grid security is enabled, only authorized users can access data in the data grid. The XC10 appliance also supports integration with a Lightweight Directory Access Protocol (LDAP) directory for user authentication. 9. How do I manage the appliance? The XC10 appliance is managed using a browser-based user interface. From the user interface, you can: • Manage user interface security. • Manage users and groups. • Configure date and time settings. • Configure e-mail delivery of user password resets. • Configure the appliance network settings. • Create and manage collectives and zones. • Manage and secure data grids. • Update appliance firmware. • Shut down or restart the appliance. 10. How do I know what is going on within the appliance? In addition to performing administrative tasks, the XC10 appliance user interface provides the ability to monitor both the progress of administrative tasks and performance of your data grids. This information helps you to determine the overall capacity and performance of your XC10 appliance. By selecting Data grid overview in the XC10 appliance administrative console, you can get a high level view of: • Used and available capacity on the appliance or collective. • Top five data grids by average transaction time. There's a new purple appliance in town Page 6 of 8 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® • Top five data grids by average throughput in transactions per second. • Used capacity over time. • Average throughput over time. • Average transaction time over time. You can also select an overview of individual data grids, which provides similar information to the data grid overview but for a specific data grid. For further details about a specific data grid, you can select Data grid detail reports with which you can get both data grid and map details. Conclusion The WebSphere DataPower XC10 Appliance is a quick, easy, and cost-effective way to add an elastic data caching tier to enhance your application infrastructure. Additionally, the XC10 appliance easily integrates with your WebSphere products. It can offload the memory and high-speed disk requirements for dynamic cache support, eliminate the need for database storage for HTTP session state persistence, and reduce redundant transactions. These optimizations can result in higher transactional performance, better hardware utilization, and lower memory footprint, altogether adding up to potentially significant cost savings. There's a new purple appliance in town © Copyright IBM Corporation 2010. All rights reserved. Page 7 of 8 developerWorks® ibm.com/developerWorks Resources Learn • IBM WebSphere DataPower XC10 Appliance product information • IBM WebSphere DataPower XC10 Appliance Information Center • Video: IBM WebSphere DataPower XC10 Appliance Session Management • Video: IBM WebSphere DataPower XC10 Appliance Monitoring • IBM developerWorks WebSphere Discuss • IBM WebSphere DataPower XC10 Appliance wiki About the author Charles Le Vay Charles Le Vay is a senior software architect. He recently joined the WebSphere Emerging Technologies team as a technical evangelist. His current focus is on promoting the advantages of elastic data grid technology within the enterprise. Before becoming a technical evangelist, he was the Web Service interoperability architect for IBM's WebSphere Application Server. He represented IBM on the Web Service Interoperability Organization (WS-I) Reliable Secure Profile (RSP) Working Group. As an interoperability architect, Charles focused on ensuring IBM products meet industry standard interoperability criteria. He was responsible for identifying and detailing best practices for Web services interoperability. Prior to this position, Charles specialized in mobile application development, wireless technology, and extending enterprise applications securely to mobile devices. Before joining IBM, Charles developed advanced submarine sonar systems for the Navy and specialized in signal processing and underwater acoustics. Charles is a graduate of Duke University with a degree in physics. There's a new purple appliance in town Page 8 of 8 © Copyright IBM Corporation 2010. All rights reserved. The WebSphere Contrarian: Change is hard, or is it? Skill Level: Intermediate Tom Alcott Consulting IT Specialist IBM 06 Oct 2010 Changing the LDAP bind password in IBM® WebSphere® Application Server doesn’t have to be complex and mandate an outage or interruption of service. The WebSphere Contrarian discusses a simple pattern that can be employed to change the LDAP bind password used by WebSphere Application Server in a simple and easy way. In each column, The WebSphere® Contrarian answers questions, provides guidance, and otherwise discusses fundamental topics related to the use of WebSphere products, often dispensing field-proven advice that contradicts prevailing wisdom. Changing how you feel about change We often think of "change" as being "difficult,' and with a quick search of the Internet using your favorite search engine, you can find a number of articles titled Why Change is Hard or Reasons Change is Difficult, plus even a song or two on this theme. That said, while I too can find change daunting I wouldn’t always characterize change as being difficult -- which probably isn’t totally unexpected given my contrarian nature. In past installments of this column, in fact, I have discussed change in WebSphere Application Server and the precautions to take when making changes in WebSphere Application Server. I would like to take this opportunity, then, to return to the subject of change in the context of WebSphere Application Server administration, specifically a common security change task: changing LDAP Change is hard, or is it? © Copyright IBM Corporation 2010. All rights reserved. Page 1 of 4 developerWorks® ibm.com/developerWorks passwords without downtime. LDAP password changes The solution for making changes to passwords entails a pattern, one that isn’t specific to WebSphere Application Server or LDAP, but one that relies on the use of two user IDs and passwords and has been used since antiquity -- well, computer antiquity at least -- to change passwords that are in use between one server and another. And because this pattern isn’t specific to WebSphere Application Server or LDAP, it can be used for other resources as well, like databases. The pattern is this: 1. Create two user IDs on LDAP and give them the same permissions. To keep this simple, let’s call the two user IDs userA and userB. 2. When you first configure WebSphere Application Server to use LDAP, use userA and the password for userA as the LDAP bind distinguished name and bind password. 3. When it’s time to change passwords -- say, in 60 days because that’s how often your corporate security policy requires passwords to be changed -log in to LDAP and change the password for userB, at which point userB now has a new password. 4. After saving the new password for userB in LDAP, go into WebSphere Application Server and update it to use userB and the password for userB as the LDAP bind distinguished name and bind password. 5. Save the configuration. At this point, any servers already running are using userA and will continue to work, and any servers that are either started or restarted will use userB; both user IDs will work. If you don’t want to restart all your servers, you can choose to dynamically update the LDAP binding information, thus avoiding the need to incur a service interruption outage when updating the LDAP password. Remember that dynamically updating the LDAP binding information in WebSphere Application Server does NOT eliminate the need for two IDs or the need to update the WebSphere Application Server configuration; it just avoids the need to restart the WebSphere Application Server processes (deployment manager, node agent, application server). If you only employ one user ID, then the instant you change a password in LDAP, any WebSphere Application Server still using the old password Change is hard, or is it? Page 2 of 4 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® will potentially be unable to contact LDAP, which will result in an authentication failure. You must use two user IDs to employ this pattern. By following these simple steps, you can change passwords used by WebSphere Application Server to access external resources, like LDAP, without a complete service outage. Change is easy! Acknowledgements Thanks to Keys Botzum for his suggestions which led to devoting this column to this topic. Change is hard, or is it? © Copyright IBM Corporation 2010. All rights reserved. Page 3 of 4 developerWorks® ibm.com/developerWorks Resources • The WebSphere Contrarian • Changing host names and migrating profiles in WebSphere Application Server • Less might be more when tuning WebSphere Application Server • Information Center: Updating LDAP binding information • Book: IBM WebSphere: Deployment and Advanced Configuration by Roland Barcia, Bill Hines, Tom Alcott and Keys Botzum, IBM Press, 2004 • IBM developerWorks WebSphere About the author Tom Alcott Tom Alcott is consulting IT specialist for IBM in the United States. He has been a member of the Worldwide WebSphere Technical Sales Support team since its inception in 1998. In this role, he spends most of his time trying to stay one page ahead of customers in the manual. Before he started working with WebSphere, he was a systems engineer for IBM's Transarc Lab supporting TXSeries. His background includes over 20 years of application design and development on both mainframe-based and distributed systems. He has written and presented extensively on a number of WebSphere run time issues. Change is hard, or is it? Page 4 of 4 © Copyright IBM Corporation 2010. All rights reserved. Comment lines: The challenges of introducing new technology Skill Level: Introductory Andre Tost ([email protected]) Senior Technical Staff Member IBM 06 Oct 2010 Technologies that are new to an organization present a number of issues simply because they are new. Such issues are rarely addressed properly or sufficiently, if at all. The lack of a formal process for introducing new technology into an IT environment is one of the biggest challenges faced by companies looking to leverage new products. Here is a look at how you can plan for introducing new technologies -including new software, new systems, new versions of existing software and systems, and more -- to ensure the proper technical teams and governance mechanisms are involved. Introduction I have spent a significant amount of my time over the last several years on a series of projects across multiple industries in locations all over the world. The most important underlying theme during this time was (and still is) the introduction and promotion of the Service Oriented Architecture concept as a means of organizing functionality in a decoupled, dynamic, and business-aligned manner. For many organizations, this new concept can be rather disruptive in that it changes the way solutions are designed, implemented, and operated. Companies have to deal with new products and new patterns of solution design, new requirements towards the maintenance and operation of business solutions, and new opportunities for directly supporting the business needs in IT. However, most organizations try to address these challenges with their existing roles, responsibilities, and processes. In some cases, they realize too late that a more fundamental change is needed: a change of processes, organizations, and, yes, culture. The challenges of introducing new technology © Copyright IBM Corporation 2010. All rights reserved. Page 1 of 7 developerWorks® ibm.com/developerWorks In this article, I want to describe a common issue that I have come to identify as "the challenge of introducing new technology" and look at the best way an organization can deal with this challenge. Why new technology? This is a bit of a rhetorical question. Dealing with and leveraging new technology is a part of our lives in IT. In fact, the pace with which new technologies emerge is steadily increasing, and so companies that can leverage new technology quicker than others gain a competitive advantage and are able to deliver real business value faster. In the context of this discussion, "new technology" includes: • New software, specifically new commercial, off-the-shelf software products or new middleware products. • New systems, specifically new hardware platforms or new operating systems. • New major versions of existing software or hardware. • New significant functionality leveraged in an existing hardware or software product. Some of these new technology types are relevant simply because of time and related legal or contractual obligations; new versions of hardware or software must be introduced because vendor support might otherwise be dropped. New generations of hardware are interesting because of improved technical characteristics (for example, faster processors, less energy consumption, and so on). But sometimes new technology is triggered by emerging IT trends in general. For example: • The advent of service orientation is an example of such a trend, as something that went from being brand new and not very well documented or supported in actual products, to being today what I consider the state of the art of software architecture and development. IT organizations have had to react to this trend, with varying speeds of adoption. • Another trend (which happens to be something I deal with a lot) is business process management (BPM). As the name indicates, BPM calls for better management of processes -- for example, a higher degree of automation, shorter cycles, better monitoring of current events -- all of which are only possible if new technology is used that directly supports The challenges of introducing new technology Page 2 of 7 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® these goals. • A possible future trend that might lead to equally large numbers of new technologies and products is the concept of cloud computing, just to name one last example. Another trigger for new technology can come from the lines of business in an enterprise. New business requirements might arise that result in the need for technology that an IT organization currently does not support. Examples for the technologies that have to be introduced to the IT landscape in those cases are portals, multi-channel architectures, or business rule systems. A lifecycle for new technology Despite the wide variety of new technologies (as defined above) and just as many possible triggers for these technologies, you can still define a common lifecycle that all technologies share. The lifecycle described in Table 1 is such an example; there are many variations but all would include these same major aspects: Table 1. Sample technology lifecyle Stage Description Introduced A technology or product is brought into an organization for the first time. This is when various groups get to take a first look at the technology, often testing its use in the form of a proof of concept. Planned Initial planning has been conducted for the technology to go into production in support of a business solution, which will act as a pilot. The planning activities include operational aspects. Deployed The technology is in production, in a limited fashion, supporting only one or two business solutions. Mature The technology has reached a high degree of maturity. This includes organizational capabilities, refined processes for both development and operational support. Known best practices have been applied. Retired No new solutions can be deployed on top of the technology. Existing solutions are migrated over time, if possible. Introducing a new technology A suitable process must exist to support the lifecycle described above. Many The challenges of introducing new technology © Copyright IBM Corporation 2010. All rights reserved. Page 3 of 7 developerWorks® ibm.com/developerWorks companies struggle with this because there is usually no defined process to perform for handling new technology. In reality, the effort of bringing a new technology into production is mostly tied to the regular development and deployment lifecycle (that is, the activities that are performed for any new business solution) and paired with the individual heroics of experienced staff. In particular, it has been my experience that operational characteristics are considered late -- or not at all. These characteristics include things like monitoring, capacity planning, problem determination, and backup/restore procedures, none of which deal with creating a new solution, but instead deal with operating and maintaining it. The key point to remember is that a new technology will bring new requirements with it that didn’t exist before. Thus, I strongly recommend establishing a process that formally defines steps that are required whenever a new technology is introduced to a company’s IT landscape. Within such a process, you can ensure that the operational aspects are executed -and executed as early as possible. Describing such a process in detail is beyond the scope of this article, but it will be helpful to look at a sample list of essential considerations that are most often overlooked: • Technology testing As mentioned earlier, the introduction of new technology is often embedded in the process of developing and deploying a business application, and this includes all testing steps. And while these tests include non-functional and operational testing, there are no steps specific to the fact that new technology is being introduced. For example, new ways of monitoring (plus appropriate alert and report definitions) might have to be established, possibly along with using new tools for monitoring. Or, new operational procedures might be needed to ensure high availability. Or, performance tests have to be run to determine initial benchmarks. All of these aspects have to be thoroughly tested before the first production rollout. Actually, this type of test can happen in parallel to the actual development process because the relevant test cases do not require that the business application already exists. The test exclusively focuses on operational aspects that are independent of any particular business application. • Operational runbooks The challenges of introducing new technology Page 4 of 7 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® An operational runbook is basically a document (or a set of documents) describing how to operate a system. It captures procedures and best practices, gives guidance and prescriptive information, and serves the needs of operators and support personnel. Runbooks exist in almost all IT organizations, but their creation is rarely standardized or included as part of the normal process -- which is why it’s on this list. Operational staff should be involved in the introduction of new technology as early as possible, and the formal creation of runbooks is a good way of getting an operations team acquainted with technology they have never before operated. • Financials Every IT organization has an approach toward funding their activities. A business-sponsored project will have a budget based on a business case that balances cost against the benefit of a solution. IT teams have defined ways of charging for their services. While this is business as usual, the arrival of new technology brings extra considerations with it that have to be dealt with. For example, the new technology introduction process (described above) needs to be funded; the first business pilot project using a new technology should not be burdened with the extra cost of introducing it. Instead, the cost should be spread according to expected usage per the technology roadmap. Moreover, this factor speaks yet again to the necessity of getting operational teams involved early so that they can better estimate the cost of operating a new technology. It’s all about governance Assume for a second that a technology lifecycle and a formal process for introducing new technology exist. What’s the next challenge? Any process is only as good as its enforcement mechanisms, compliance criteria, and exception and escalation procedures. In short, you need proper governance. Being able to enforce the execution of a defined process is a challenge in any environment. If no mechanisms exist to prevent process steps from being ignored, then ignored they will be, because of time, budget, or other business pressures. Defining proper governance should therefore be a core part of defining and implementing a new technology introduction process. As with all aspects of governance, sponsorship from senior executives goes a long way. There should be formal compliance criteria and related checklists that gate the progression from one The challenges of introducing new technology © Copyright IBM Corporation 2010. All rights reserved. Page 5 of 7 developerWorks® ibm.com/developerWorks part of the process to the next. Relevant reviews and audits must be embedded in the process itself, together with appropriate role definitions (for example, separation between the new technology owner and the new technology reviewer). Conclusion The lack of a formal process for introducing new technology into an IT environment is one of the biggest challenges faced by companies looking to leverage new products. Such a process guides a technology along its lifecycle, ensures proper and timely involvement by technical teams (like operations), and defines proper governance mechanisms ensuring the process is always properly executed. The challenges of introducing new technology Page 6 of 7 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® Resources • IBM developerWorks WebSphere About the author Andre Tost Andre Tost works as a Senior Technical Staff Member in the IBM Software Services for WebSphere organization, where he helps IBM customers establishing Service-Oriented Architectures. His special focus is on Web services and Enterprise Service Bus technology. Before his current assignment, he spent ten years in various partner enablement, development and architecture roles in IBM software development, most recently for the WebSphere Business Development group. Originally from Germany, Andre now lives and works in Rochester, Minnesota. In his spare time, he likes to spend time with his family and play and watch soccer whenever possible. The challenges of introducing new technology © Copyright IBM Corporation 2010. All rights reserved. Page 7 of 7 Comment lines: Integrating WebSphere Service Registry and Repository with Tivoli Application Dependency Discovery Manager Skill Level: Intermediate Robert R. Peterson ([email protected]) WebSphere Enablement Consultant IBM 06 Oct 2010 Using the IBM® WebSphere® Service Registry and Repository Discovery Library Adapter (DLA), administrators can see the Web services present in an IT environment in the same IBM Tivoli® Application Dependency Discovery Manager user interface with which they view other resources, applications, and systems. Here is a high level overview of the integration possible between these two products that could help you enhance your understanding and visibility of your overall IT environment. Get a better view If you are using IBM® WebSphere® Service Registry and Repository (hereafter referred to as Service Registry and Repository), chances are that you’re integrating it with other IBM WebSphere products, such as IBM WebSphere Message Broker or IBM WebSphere DataPower® SOA Appliances. But did you know that you can also integrate Service Registry and Repository with several IBM Tivoli products as well? For example, the status of a service in Service Registry and Repository can be updated with IBM Tivoli® Composite Application Manager (ITCAM) for SOA, and Service Registry and Repository can also synchronize with IBM Tivoli Change and Configuration Management Database. The purpose of this article, however, is to highlight how you can export metadata about WSDL services from Service Registry and Repository and then load that metadata into IBM Tivoli Application Dependency Discovery Manager (TADDM). Integrating WebSphere Service Registry and Repository with Tivoli Application Dependency Discovery Manager © Copyright IBM Corporation 2010. All rights reserved. Page 1 of 7 developerWorks® ibm.com/developerWorks With information on Service Registry and Repository Web services in TADDM, an administrator can have a holistic view of all the Web services and policies active in their IT environments from one place: the TADDM user interface. What is Tivoli Application Dependency Discovery Manager? A typical data center has an array of different systems and applications, and are used by multiple teams on multiple projects. Keeping track of the machine inventory and the applications running throughout a data center can easily become overwhelming. Taking things a step further, determining what dependencies and relationships these different systems have amongst each other can be an even more daunting task. This is where TADDM can help: Tivoli Application Dependency Discovery Manager is designed to serve as a repository for what is in your data center -- from switches to computer systems to applications -- and how they all interact with each other. TADDM has an extensive graphical interface with which you can list and query for particular configuration items, as well as view relationships and topologies. TADDM also maintains a change history of configuration items along with the ability to take a "snapshot" of a version so that you can compare configuration items. With these tools, an administrator can easily see the changes to the data center over time. TADDM also has customization and organization capabilities for the components it stores; for example, components can be grouped into business applications. TADDM can be populated with information about your IT environments in several ways. For example, TADDM can perform scans of IP subnets, during which it intelligently discovers systems and components for you. TADDM also has a bulk loading capability with which data can be imported in IDML (Identity Markup Language) format. Discovery Library Adapters (DLAs) are small standalone software components that collect data in IDML format. Several DLAs are available for Tivoli products (like IBM Tivoli Monitoring), z/OS environments, databases, and applications -- and also for WebSphere Service Registry and Repository, which you will see shortly. How the integration works The DLA for Service Registry and Repository is shipped as part of ITCAM for SOA; it is an independent component with its own installation package. Once installed and configured, the DLA has the capability to scan Service Registry and Repository and discover the services present in the repository. The DLA can be installed on an independent machine (Figure 1) or installed locally on the same server as Service Registry and Repository. If it is installed independently, it requires a copy of the Service Registry and Repository client JARs so it can communicate remotely with Service Registry and Repository. The DLA produces an XML file that contains Integrating WebSphere Service Registry and Repository with Tivoli Application Dependency Discovery Manager Page 2 of 7 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® metadata about all the WSDL services it finds in Service Registry and Repository, along with associated WS-Policy documents. Figure 1. Overview of Discovery Library Adapter usage To execute the DLA, use the WSRR_DLA command found in the DLA's bin directory. For example, on Linux®, the command would be: ./WSRR_DLA.sh –r The –r switch indicates that the IDML should refresh completely instead of listing only recent Service Registry and Repository changes. When the operation is complete, a file with a name similar to this is written to the DLA /staging directory: WSRRv600-L.hostname.2010-09-13T16.05.23.449Z.refresh.xml The Service Registry and Repository DLA can also be configured to copy the resulting XML file via FTP or SFTP to an off-box location. The DLA can be configured to include all WSDL services in Service Registry and Repository or, alternatively, it can pull in only services within one or more Service Registry and Repository classifications. The XML files produced by the DLA conform to the IDML schema; the files produced are often referred to as IDML books. IDML uses a common data model which standardizes how system solutions and technologies represent resources and relationships. TADDM can import IDML books. It adds the resources and any relationships in the book to its repository. To import the Service Registry and Repository IDML book into TADDM, use the load command loadidml.sh from the TADDM server machine’s $COLLATION_HOME/bin directory. For example, on Linux the command would be: Integrating WebSphere Service Registry and Repository with Tivoli Application Dependency Discovery Manager © Copyright IBM Corporation 2010. All rights reserved. Page 3 of 7 developerWorks® ibm.com/developerWorks ./loadidml.sh –f \tmp\WSRRv600-L.hostname.2010-09-3T16.05.23.449Z.refresh.xml Using these commands in conjunction with the DLA’s capability to transfer files, the process of importing Web services from Service Registry and Repository into TADDM can be easily scripted using (for example) simple shell scripts and UNIX® cron processes. This enables the WSDL imports to TADDM to be automated. After loading the book, you’ll notice new resources listed in the TADDM user interface as Web service resources. For example, Figure 2 shows three Web services imported to TADDM from Service Registry and Repository: FinancialService, QuoteService, and CRService1. Figure 2. TADDM user interface Also notice that under the Details tab for a service, you can see the WSDL operations debitOperation and creditOperation. Using this process, a TADDM administrator can keep track of Web services in TADDM along with other components and systems in their IT environment. Some extra integration tips Integrating WebSphere Service Registry and Repository with Tivoli Application Dependency Discovery Manager Page 4 of 7 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® Here are some additional points to help you with this integration: • Logging The log file for the Service Registry and Repository DLA can be found at /logs/WSRRDLALog.log. Be sure to take a look at the log file after running WSRR_DLA.sh. • Validation TADDM comes with a certification tool for IDML files. The tool can validate the integrity of any IDML file, not just those generated by the Service Registry and Repository DLA. You should run the certification tool on Service Registry and Repository IDML books before they are imported into TADDM. The tool consists of a JAR file called idmlcert.jar located in /cmdb/dist/sdk/dla/validator/v2 within your TADDM installation directory. Listing 1 shows an example of its usage along with some example output. Listing 1. Using the IDML certification tool java -Xmx256m -Xmx256m -jar idmlcert.jar -verbose WSRRv600-L.hostname.2010-09-3T16.05.23.449Z.refresh.xml CDM.xsd version=2.10.6 idml.xsd version=0.8 NamingRules.xml version=2.10.11 DL model version=2.10.6 ======================================================================= File: WSRRv600-L.nc185067.tivlab.raleigh.ibm.com.2010-09-13T16.05.23.449Z.refresh.xml ======================================================================= Certification tool found: 19 Managed elements 32 Relationships [PASS] [PASS] [PASS] [PASS] [PASS] [PASS] [PASS] - TEST TEST TEST TEST TEST TEST TEST 00 01 02 03 04 05 06 (XML Parse) (All MEs have a valid ID) (superior reference IDs in book) (Attributes are valid) (All managed elements have a valid naming rule) (All managed elements are valid) (All relationships are valid) Classes used: (occurrences) process.Document (4) process.ManagementSoftwareSystem (1) process.Repository (1) soa.WSOperation (4) soa.WSPort (3) soa.WSPortType (3) soa.WebService (3) Relationships used: (occurrences) definedUsing(soa.WSOperation, process.Document) (5) definedUsing(soa.WSPort, process.Document) (4) definedUsing(soa.WSPortType, process.Document) (4) definedUsing(soa.WebService, process.Document) (4) federates(process.Repository, process.Document) (4) federates(soa.WSPortType, soa.WSOperation) (4) federates(soa.WebService, soa.WSPort) (3) invokedThrough(soa.WSOperation, soa.WSPort) (4) Integrating WebSphere Service Registry and Repository with Tivoli Application Dependency Discovery Manager © Copyright IBM Corporation 2010. All rights reserved. Page 5 of 7 developerWorks® ibm.com/developerWorks Book passed all certification tests Elapsed time: 5.9 seconds The certification tool is not guaranteed to find all problems with an IDML book, but if a problem is found the tool provides helpful debugging information. • Viewing You can view all the objects that have been imported into TADDM from the IDML book. To do this, select MSS from the TADDM Edit menu, then scroll to the bottom and select the Service Registry and Repository DLA. Click List CIs. You should see a list of objects similar to Figure 3. Figure 3. WSRR objects imported into TADDM Conclusion With the WebSphere Service Registry and Repository DLA, administrators can see the Web services present in an IT environment in the same Tivoli Application Dependency Discovery Manager user interface with which they view other resources, applications, and systems. This article provided a brief introduction to TADDM with an overview of the integration between Service Registry and Repository and TADDM that’s possible using the product-specific DLA, and offered additional tips when using the Service Registry and Repository IDML book. Use the Resources below to further investigate how TADDM can help you by enhancing your understanding and visibility of your overall IT environment. Integrating WebSphere Service Registry and Repository with Tivoli Application Dependency Discovery Manager Page 6 of 7 © Copyright IBM Corporation 2010. All rights reserved. ibm.com/developerWorks developerWorks® Resources • Information Centers • WebSphere Service Registry and Repository • Tivoli Application Dependency Discovery Manager • Tivoli Composite Application Manager for SOA • Redbook: Integrating Tivoli Products • IBM developerWorks Tivoli • IBM developerWorks WebSphere About the author Robert R. Peterson Robert R. Peterson is a solution architect for Tivoli's Integration Center of Competency. He works to improve integration across Tivoli's Service Availability and Performance Management (SAPM) product portfolio. Robert is an IBM Master Inventor for his patent contributions, an IBM Press author, and a frequent conference speaker. Visit his website. Integrating WebSphere Service Registry and Repository with Tivoli Application Dependency Discovery Manager © Copyright IBM Corporation 2010. All rights reserved. Page 7 of 7