Saturday, June 21, 2008

Thread Dumps

Many a times our customers complain of Coldfusion Server(CF) hanging, becoming non-responsive, taking 100% cpu or some request taking too much time. In order to understand the reasons why this happens, only way is to analyze the "Thread dumps". Not many of our CF users are java geeks and therefore when we ask them to send a thread dump, they have a very little clue about it. I hope they wouldn't be clueless anymore ;)What exactly is "Thread dump""Thread dump" basically gives you information on what each of the thread in the VM is doing at any given point of time. This makes "Thread dump" an excellent debugging tool. It can tell you the states of each of the thread in the VM, where exactly each thread is in the execution path at that point, which thread is waiting and where is it waiting and lot more. It also shows you the stack of each thread and can help you track the execution path.How do I take a Thread dump?For any Java VM, if you are running it from a command prompt, you can get the thread dump by pressing Ctrl+Break (for windows) or Ctrl+\ (for unix machines) on the terminal running the server.In case you are running the VM in background or as services, you can send a "SIGQUIT" signal to the process to get the thread dump. To send this signal to VM on unix machine, you can use "kill -SIGQUIT [pid]" where 'pid' is the process id of the server process. This will send the signal to the VM to dump the thread stack on the error stream (On Sun JVM) or to a new file (IBM's JVM).You can also use the Stacktrace tool to get the thread dump. It is a nice java webstart application that you can run on the machine running the server. All you need is to specify the "process id" and it will nicely show the threaddump in its own window.To be more specific for CF, if the standalone CF server or CF on J2EE server has a terminal, use Ctrl+Break or Ctrl+\ depending on the platform. If its running as background process or as services, use Stacktrace tool I mentioned earlier.Here is how the thread dump would look.Full thread dump Java HotSpot(TM) Server VM (1.5.0_04-b05 mixed mode):"web-4" prio=5 tid=0x28999418 nid=0x1460 runnable [0x2fbaf000..0x2fbafd18] at java.io.WinNTFileSystem.canonicalize0(Native Method) at java.io.Win32FileSystem.canonicalize(Win32FileSystem.java:374) at java.io.File.getCanonicalPath(File.java:531) at java.io.FilePermission$1.run(FilePermission.java:218) at java.security.AccessController.doPrivileged(Native Method) at java.io.FilePermission.init(FilePermission.java:212) at java.io.FilePermission.(FilePermission.java:264) at java.lang.SecurityManager.checkRead(SecurityManager.java:871) at java.io.File.exists(File.java:700) at jrunx.resource.FileResource.exists(FileResource.java:98) at jrunx.resource.FileResource.getURL(FileResource.java:140) at jrun.servlet.JRunServletContext.getResource(JRunServletContext.java:192) at jrun.servlet.file.FileServlet.service(FileServlet.java:148) at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:91) at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42) at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:257) at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:541) at jrun.servlet.http.WebService.invokeRunnable(WebService.java:172) at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:318) at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:426) at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:264) at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)"web-3" prio=5 tid=0x2814e470 nid=0xd70 in Object.wait() [0x2faaf000..0x2faafd98] at java.lang.Object.wait(Native Method) - waiting on <0x064b5a90> (a jrunx.scheduler.JSemaphore) at jrunx.scheduler.JSemaphore.acquire(JSemaphore.java:74) - locked <0x064b5a90> (a jrunx.scheduler.JSemaphore) at jrun.servlet.network.NetworkService.accept(NetworkService.java:348) at jrun.servlet.http.WebService.createRunnable(WebService.java:104) at jrunx.scheduler.ThreadPool$DownstreamMetrics.createRunnable(ThreadPool.java:285) at jrunx.scheduler.ThreadPool$ThreadThrottle.createRunnable(ThreadPool.java:347) at jrunx.scheduler.ThreadPool$UpstreamMetrics.createRunnable(ThreadPool.java:239) at jrunx.scheduler.WorkerThread.run(WorkerThread.java:62)"web-2" prio=5 tid=0x271954c0 nid=0x170c in Object.wait() [0x2ef6e000..0x2ef6fa18] at java.lang.Object.wait(Native Method) - waiting on <0x02af8eb8> (a java.awt.image.PixelGrabber) at java.awt.image.PixelGrabber.grabPixels(PixelGrabber.java:254) - locked <0x02af8eb8> (a java.awt.image.PixelGrabber) at java.awt.image.PixelGrabber.grabPixels(PixelGrabber.java:209) at com.lowagie.text.Image.getInstance(Unknown Source) at com.lowagie.text.Image.getInstance(Unknown Source) at com.lowagie.text.pdf.PdfGraphics2D.addAltText(Unknown Source) at ice.pilots.html4.MacromediaCSSExtension.addonImageProcessing(MacromediaCSSExtension.java:186) at ice.pilots.html4.ObjectBox.paintChunk(OEAB) at ice.pilots.html4.InlineBox.paintChildren(OEAB) at ice.pilots.html4.InlineBox.paintChunk(OEAB) at ice.pilots.html4.InlineBox.paintChildren(OEAB) at ice.pilots.html4.BlockBox.paint(OEAB) at ice.pilots.html4.OutlinePainter.drawBox(OEAB) at ice.pilots.html4.BlockBox.paint(OEAB) at ice.pilots.html4.OutlinePainter.drawBox(OEAB) at ice.pilots.html4.BlockBox.paint(OEAB) at ice.pilots.html4.CSSLayout.paint(OEAB) - locked <0x02cebb10> (a java.lang.Object) at ice.pilots.html4.ThePrinter.printPage(Unknown Source) at coldfusion.document.DocumentSection.process(DocumentSection.java:230) at coldfusion.document.DocumentSection.print(DocumentSection.java:108) at coldfusion.document.DocumentExporter.export(DocumentExporter.java:237) at coldfusion.document.DocumentFrame.exportContent(DocumentFrame.java:118) at coldfusion.document.DocumentProcessor.processContent(DocumentProcessor.java:130) at coldfusion.document.DocumentProcessor.ProcessContent(DocumentProcessor.java:59) at coldfusion.tagext.lang.DocumentTag.processContent(DocumentTag.java:1218) at coldfusion.tagext.lang.DocumentTag.access$100(DocumentTag.java:84) at coldfusion.tagext.lang.DocumentTag$3.run(DocumentTag.java:1179) at java.security.AccessController.doPrivileged(Native Method) at coldfusion.tagext.lang.DocumentTag.doAfterBody(DocumentTag.java:1174) at cfcmyk2ecfm937582361.runPage(E:\CFusionMX7\wwwroot\testfolder\doctest\cmyk.cfm:3) at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:152) at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:349) at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65) at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:209) at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:51) at coldfusion.filter.PathFilter.invoke(PathFilter.java:86) at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:69) at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) at coldfusion.filter.RequestThrottleFilter.invoke(RequestThrottleFilter.java:115) at coldfusion.CfmServlet.service(CfmServlet.java:107) at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:78) at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:91) at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42) at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:257) at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:541) at jrun.servlet.http.WebService.invokeRunnable(WebService.java:172) at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:318) at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:426) at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:264) at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)...If you anayze this thread dump, you can see that "web-2" thread is handling request for "cmyk.cfm" and is waiting for the images to be loaded i.e (actually at Image.getInstance()). At this point, cfdocument has sent another http request for the image file that it has to render and that request is handled by another thread "web-4" which is running and is currently checking if the image file requested exists on the file system. Isn't it very powerful ?

Wednesday, June 18, 2008

Customizing Login Screen

Here are some simple steps to follow to customize your very own SAP Enterprise Portal Login Page.The login page is part of the par file with the name com.sap.portal.runtime.logon.par1) Copy the file with the above name from the following location (EP6 SP9 and higher). It has the additional ending ".bak", which you should remove on you local copy :\\\j2ee\cluster\server<#>\apps\sap.com\irj\servlet_jsp\irj\root\WEB-INF\deployment\pcd\2) Import the PAR file into Netweaver Developer Studio:- Select File>Import .- Choose the option PAR file. Select Next and a popup window appears.- In the window you have 3 text fields: The location of the par file, a project name (which will also be the new par file name) and the location where the project should be saved. The project name should differ from the original SAP file to avoid overwriting of the original. It also works as a security blanket, in case you have an exception in your custom logon code or want to start from scratch again.3) Check, that you have the following 2 JAR files under the subfolder /lib :1. com.sap.portal.runtime.logon_api.jar2. umelogonbase.jarIf you don't have these file, you will see a portal exception on the Logon page and the log file will have the entry:Caused by: com.sapportals.portal.prt.core.broker.PortalComponentInstantiationException: Could not instantiate implementation class com.sapportals.portal.ume.component.logon.SAPMLogonCertComponent of Portal Component my.new.logon.certlogon because: Could not find implementation classat com.sapportals.portal.prt.core.broker.PortalComponentItemFacade.getInstanceInternal...The files you need are located in the original PAR file. Just open it with a Unzip Program and copy the files in your project.Now you have your project prepared and you are ready for making changes.The most important files for a customization are:- images, which are stored under dist\layout- JSP files, which are stored under dist\PORTAL-INFAll JSP pages include 3 additional files: The header (umLogonTopArea.txt), the bottom (umBotArea.txt) files, as well as the logon_proxy.txt .The different pages in the Logon Par file areLogon page : umLogonPage.jspProblem page : umLogonProblemPage.jspHelp page (PW reset) : umHelpPage.jspReset Password : umResetPasswordPage.jspChange Password Page: changePasswordPage.jspCertificate Logon : umLogonCertPage.jspNow enough about what elements we have. Let's customize ! But first make sure that you upload the new par-file, customize the authschemes.xml and restart the portal.Changing TextThe text seen on the logon page is not in the JSP page, but in properties files which are called by tags like the Welcome text : In order to change "Welcome" to "Welcome to MyHR" you have to :- Unzip the file umelogonbase.jar which you can find under dist\PORTAL-INF\lib- Find the file "logonLabels_" which contains your language;e.g. for german logonLabels_de.properties,for russian logonLabels_ru.properties orfor English logonLabels_en.propertiesThe default is in the file logonLabels.properties .- Find the key which is used in the tag (here it is xtit_WELCOME) and change the text after the equal sign.- Save the changed file and create a updated JAR file using a zip program. The file needs to be named umelogonbase.jar, not umelogonbase.zip or umelogonbase.jar.zip.- Put the JAR file back to dist\PORTAL-INF\lib.Remove Support and Register linksThe links are controlled with the UM settingsume.logon.logon_helpume.logon.selfregYou could also just comment out the lines...Change/add imagesTo exchange the two images, which are by default on the logon page, do the following steps:
Copy the image(s) you want to use in your project in the the folder dist/layout.
Find the < src=""> you want to work on in the umBotArea.txt
Change the src attribute in the img tag to src="". The webpath is already defined in the file logon_proxy.txt and ready to use.In the Netweaver portal 6.0 SP9 and higher you have 2 images on the right side.Add a Document (e.g. Intro or FAQ)You can add a document link to the logon page, which points to a KM document. Updating the Logon Document would then involve no transports,and if wanted an approval process. Less paperwork to worry....1. Setup a folder Logon, e.g. under Public Documents and put in there the document you want to point to.2. Setup the folder with Read access for the Anonymous Users group.3. Create a KM Document iview and choose Anonymous as access, but don¡¦t change the path to the document yet.4. Preview the document and note down the URL of this page (In most browsers Right-click outside the image and select Properties to get the URL).5. In the iview add now the KM path an d preview it again to make sure that the path is correct.6. In the logon page, create a link. The href value is the URL you noted down but starting with /irj and without the portal server name and port (otherwise you have to change it after every transport).To spin this idea further you could show an XML form by putting that into an IFrame.Dynamic Images and LinksI want to archive a Logon page that looks different for different user. The final PAR file should also work through the DEV, QUA (and sometimes Staging STG ) and PRD without changes in the code. The user will access the portal in all cases via different URLs. Hence we have to check the Request URL which can be accessed in a Java Servlet [getRequestURL()]. In the code below we look in which system we are:Another idea is to have different views depending from which URL you are coming.Using that URL, you could have your Multi-Tenant portal without waiting to NW 2004s.Accepting a Policy with the first LogonA problem somebody had in the forum was, that a brandnew user should be redirected the first time to a Policy iview, where the user has to accept the policy.After the acceptance the iview should not appear anymore. The solution was to add an new attribute field in the User ProfileSee : http://help.sap.com/saphelp_nw04/helpdata/en/a3/d2ffd64602c149949ca3cf379dc295/content.htmAuthschemes.xmlI have now the new par file, but to have the portal reference on this PAR file, we need to customize and upload the customized authschemes.xml file through the Config-Tool of SAP WebAS.When you edit the file, you should download the file to a local directory, edit it, and when uploading the edited file, create a new node in the configuration tree for it. In this way you do not loose the original version of the file.1. Start the Config Tool by executing \j2ee\configtool\configtool.bat.2. Navigate to cluster_data>server>persistent>com.sap.security.core.ume.service.3. Switch to edit mode by clicking on the pencil which is at the upper right area.4. In the tree, select authschemes.xml and choose Download. Save the file to your local directory5. Edit the local file: To select the new PAR file as the Logon page change the occurrence of all substrings com.sap.portal.runtime.logon to yourproject/PAR file name. All com.sap.portal.runtime.logon should be substituted with something like com.company.portal.runtime.logon (or whatever you project name is). Don’t remove the part behind it.(These are the profiles in the portalapp.xml and have the names default, certlogon, basicauthentication, header, and anonymous).6. Create a new node in the configuration tree in the Config-Tool for the edited file as follows:a.Select the node com.sap.security.core.ume.service.b. Choose the symbol for Creating a node below the selected node.c. Select the type File-entry.d. Choose Upload and select the custom file from your local directory.e. Enter a name for the entry, for example, authschemes_myHR.xml. By default, the name of the uploaded file is used.f. Choose Create.g. Choose “Close window”.h. The new node appears in the configuration tree.i. Go to Global server configuration>services> com.sap.security.core.ume.service and edit the property login.authschemes.definition.file.The value needs to be changed from authschemes.xml to authschemes_myHR.xmlj. Restart the Portal.
Your done :)

Monday, June 16, 2008

SAP Tools

What tools does SAP provide for creating portal content?
SAP provides tools for creating and developing portal content – depending on the target group and the complexity of the applications.One distinguishes between
• Portal Content Studio: An administration environment integrated in SAP Enterprise Portal that is used for code-free development of portal content using wizards.
• SAP NetWeaver Visual Composer: Model-based development of portal content by simply using graphic tools.
• SAP NetWeaver Developer Studio (Web Dynpro perspective): Based on the powerful Web Dynpro programming model, application developers can develop Web user interfaces for professional business applications.
• SAP NetWeaver Developer Studio (J2EE + PDK perspective): The SAP NetWeaver Developer Studio offers complete support when developing Java projects.
• SAP ABAP Workbench: The ABAP Workbench provides the Business Server Page (BSP) technology for creating Web user interfaces.All the portal content created using these tools can be seemlessly integrated in SAP Enterprise Portal using the portal services already presented.

Friday, June 13, 2008

JAVA ,ABAP and WAS

1,Will my application run on SAP Web AS?
The SAP Web Application Server is the foundation for all new and upcoming SAP solutions, like SAP R/3 Enterprise (MySAP ERP respectively), SAP Portal, SAP Exchange Infrastructure, and all other SAP components. Basically an SAP application will run on top of the SAP Web Application Server, if SAP ships the application or solution based on the SAP Web Application Server (for current information about SAP components availability see: Platform and Technology Information Center. Furthermore, a non-SAP application that is based on J2EE could run on the Web Application Server if this application is J2EE compliant. SAP Web Application Server 6.40 provides a J2EE Engine which is an J2EE 1.3-compliant application server, that is, every J2EE-1.3 compliant application will run on it. The only thing to do is configure external resources used by your application (for example, the database, the JMS resource) inside SAP Web Application Server 6.40 and to (re)deploy your application on SAP Web Application Server 6.40. However, many third party J2EE application servers provide additional, proprietary server functions, making applications possibly not immediately portable. Check if your J2EE 1.3 application is using such non-standard extensions.
2,Will my SAP application also run on third party application servers?
There are two cases here to consider. If your application is written in ABAP the answer clearly is no. If your application is written in Java the answer is not that easy. Any J2EE application can of course be ported to other servers. This definitely means that there will be some porting effort, dependent on the specific case and the J2EE technologies used. SAP will not automatically support this. Be aware that J2EE will help a lot to standardize your application but at the same time will not guarantee a seamless port-by-copy approach.
3,Should I use Java or ABAP as the programming language for Web application development?
The Java development and runtime environment is gradually being built up, extended, and integrated in the SAP Web Application Server by SAP. However, it will still take some time in the market before the Java/J2EE platform offers the performance and reliability that the ABAP environment has already had for a long time. On the other hand Java development today is prefered for many projects done in the corporate area. Your decision on using one or the other should be based on the kind of ressources you have available.When mixing technologies it is a good idea to do a proof of concept for that project to be sure that it works in the way you expect.Pricing and Availability
4,How can customers order the SAP Web Application Server?
The SAP Web Application Server is available as part of any SAP solution. Any mySAP.com license includes the runtime usage (Runtime license) of the SAP Web Application Server for this solution. In addition, the SAP Web Application Server can be used for developing and deploying third party and custom-developed solutions. In that case, a separate license (Full usage license) is needed. The SAP Web Application Server is available through the standard SAP sales channels.
5,What are the differences between the licenses?
There are two different licenses available for using the SAP Web AS. The Runtime license is included in any SAP application license such as SAP R/3 or mySAP.com and is not available separately. This license includes the execution for all SAP software and all modifications and enhancements of supported business scenarios. The Full usage license is a separate license that allows the running of custom developed or third party applications on the SAP Web AS. This license also allows you to run all third party applications and all custom developed applications beyond modification or enhancements or beyond supported business scenarios. Architecture and Development
6, What are the features of the different SAP Web Application Server releases?
SAP Web Application Server 6.10 was the first release and supports native Web technologies like HTTP, HTTPS, SMTP, XML, SOAP. The Business Server Page (BSP) programming model is available for developing Web applications. This model consists of server side scripting and is similar to JavaServer Pages (JSP). The BSP programming model is based on ABAP and is completely integrated into the ABAP Development Workbench. All the reliable and proven features from the SAP application server are still available in SAP Web Application Server 6.10. It provides the platform for developing, executing, and operating ABAP based Web applications and Web services as well as classical SAP GUI based applications. SAP Web Application Server 6.20 is available since June 2002. It is enhanced through a 1.2 compliant J2EE Server. The SAP Web Application Server 6.20 enables the development and deployment of ABAP-based or J2EE-based applications on the same machine. The Web development is enhanced through a tag library for the JavaServer Page (JSP) and Business Server Page (BSP) programming model. The tag library contains predefined user interface elements like easy buttons and input fields as well as more complex elements like trees, tables, and so on, with predefined built-in functions. Using tag libraries accelerates the development of professional and browser-independent Web applications. All the reliable and proven features from the SAP application server are still available in the SAP Web Application Server 6.20. It provides a platform to develop, execute, and operate ABAP or Java based Web applications and Web services as well as traditional SAP GUI based applications.
7,Is a development environment for Java included?
SAP Web Application Server 6.20 comes with many tools and plugins for Borland Jbuilder. Every plugin is also available in a standalone version that makes it possible to use those as tools for other development environments. SAP Web Application Server 6.40 also delivers NetWeaver Developer Studio, a development environment for Java that is based on the Eclipse SDK, an Open Source tool originated by IBM. NetWeaver Devloper Studio comes with additional plugins like such for development of J2EE applications, Web Dynpro, a Data Dictionary, Web Services tools, and many other features.
8,Do ABAP developers have to learn Java?
No. Since with SAP Web Application Server there is no technology or feature that would be undoable with ABAP, there is no immediate need to learn Java. With BSP, there is also a sufficient technology for Web based development. In fact we think that in the foreseeable future any kind of applications can also be done with ABAP. However, in the future SAP may come up with more Java based technologies and applications, which may not be available on the ABAP side. These then would need the knowledge of the Java language and technologies. Could I transport Java classes in the same way as in ABAP? With Java Development Infrastructure SAP now provides similar features for Java as for the transport system in ABAP. The difference is that all Java related program objects are stored in a file system at runtime, while for development they carried out on the local development workplace, compared with ABAP where all related program objects are stored in the central database and the development is done in the central server by using remote access. Nevertheless Java Development Infrastructure does include a database based version control system. Additionally there is an automatic Component Build Service and a Change Management System.

SAP Interview Questions

1)Accessing a Portal Component in the Default Mode?
Ans: doContent();
2) Extending class when Developing your Portal Components?
Ans: AbstractPortalComponent.
3) Portal Runtime calls the methods in the Life Cycle
Ans: init(), service(), destroy()
4) What are the Parameters that we have to pass to doConent();
Ans: IPortalComponentRequest ,IPortalComponentResponse;
5) How do u access a Resource from a request object
Ans: request.getResource();
6) Personalization concept what are the data type ….the type attribute supports
Ans : String , Date , Select , Boolean
7) How do u get the property from the IPortalCompenentProfile
Ans : getProperty(String)
8) What is the method has to be overridden by the class that extends from PageProcessorComponent
Ans : getPage();
9) Give the sequence of methods execution of DynPage
Ans : 1) doInitialization() 2) doProcessAfterInput()3) doProcessBeforeOutput()10) sequence of method calls when an event occurs Ans : 1) doProcessAfterInput()2) on3) doProcessBeforeOutput()

SAP and Microsoft

The decade-long close partnership between Microsoft and SAP, fueled by the complementary nature of our philosophies and respective market segments, has resulted in unrivaled solution for our joint customers: an integrated system software platform for mySAP.com from a single source.
With the agreement signed between Steve Ballmer (CEO Microsoft) and Henning Kagermann (CEO SAP AG) on May 12th, 2004, the companies announced a significant expansion of their long-standing relationship based on a shared commitment to Web services as the foundation for the next generation of enterprise software. For more information, please read the
Press Release.
As a basis for SAP's mySAP.com, the Microsoft Platform and Microsoft Office offer a combination of high-end scalability, reliability, and future growth for SAP customers at a low price to acquire and operate. We are dedicated to helping business users easily adapt to the rapidly changing world of new, improved technology and get the leading edge in performance and reliability with the best cost of ownership.
More than 46,000 SAP installations run on Microsoft Windows®—more than all other platforms combined. Almost two-thirds of all new SAP installations are deployed on Microsoft Windows. By aligning our flagship software efforts for the next decade, Microsoft and SAP are reaffirming our commitment to helping customers protect, integrate, and extend their investments across Microsoft and SAP solutions.

SAP Enterprise Portal?

SAP Enterprise Portal helps companies reap the full benefit of their e-business infrastructure by unifying business processes. The benefits of enterprise portals include improved access to up-to-date information, leading to increased staff collaboration and productivity.
In combination with SAP Enterprise Portal, the HP Enterprise Portal Program helps customers build portal solutions tailored to their specific needs. Based on hundreds of implementations, HP builds portals optimized for the requirements of each customer situation and usage scenario – from fast standard installations based on pre-packaged components to highly complex and integrated portal solutions. For standard installations, HP offers entry-level servers and the
SAP NetWeaver Rapid Installer (a combination of SAP Enterprise Portal software packaged with pre-configured HP hardware components) along with flexible finance and leasing options. For complex portal solutions, HP offers mid-high level servers, EVA and MSA storage solutions, and consulting. Supporting solutions like output management or mobility services are also available. Together, HP solutions and SAP Enterprise Portal ensure continuous and secure information access based on user-specific roles.