Firstly, thanks Ant for the info on WSIF Providers - huge timesaver there. >From an architectural perspective, one can not hide the fact that reading WSDL files DOES take a fair amount of time. With the average java method invocation taking under a second, the impact of 1.5-3 seconds just for reading a WSDL file for one service can be enormous, especially if you're switching to a SOA where '000s of transactions will be running in this manner.
Can anyone help me with a possible solution for this ? How can one prevent reading the WSDL file EVERY time the transaction is invoked ? Are there any available caching mechanisms like Oracle's Least Recently Used Caching mechanism for SQL statements ? Regards -------------------------------------------- Rick Bakhshi Middleware Specialist Belgacom, Brussels [EMAIL PROTECTED] -------------------------------------------- -----Original Message----- From: Anthony Elder [mailto:[EMAIL PROTECTED] Sent: 02 April 2003 11:15 To: [EMAIL PROTECTED] Subject: re : WSIF Providers Hi Rick, nice to hear you've written your own WSIF provider. If you package up you code correctly WSIF should automatically make it available to all WSIF clients . What you need to do is: - WSIFPluggableProviders discovers providers by locating their names in service provider files. The service provider file must be named org.apache.wsif.spi.WSIFProvider and is must be in a directory named META-INF/service. This directory must be in a jar file and the jar file available in the classpath. The contents of the file is a list of the fully quailified class name of the WSIFProvider. You can see an example of this if you look in with the one defining the existing WSIF providers in wsif.jar or via the cvs interface at: http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-axis-wsif/java/src/META-INF /services/org.apache.wsif.spi.WSIFProvider - When WSIF is initialised it will instantiate all the providers named in the service provider files. The WSIFProvider must have a noargs constructor. In the constructor the provider should check that all its required resources are available, such as any required jars being available in the classpath, and if everything is ok it should register any WSDL extensions it uses with the addExtensionRegistry call. If required resources are not available the provider should disable itself by setting getBindingNameSpaceURI's to return an array of length zero (and not registering its WSDL extensions). As all this happens every time WSIF is initialised you should try to keep your WSIFProvider class lightweight and any work done in constructing it to a minimum. You can see examples of this code in the existing WSIF providers, for example: http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-axis-wsif/java/src/org/apac he/wsif/providers/soap/apacheaxis/WSIFDynamicProvider_ApacheAxis.java This should be all you need to do. Now doing a getPort for a port using your binding namespace should result in the createDynamicWSIFPort being called on your WSIFProvider class. Have you considered making your provider available to other WSIF users? ...ant Anthony Elder [EMAIL PROTECTED] Web Services Development IBM UK Laboratories, Hursley Park (+44) 01962 818320, x248320, MP208. "BAKHSHI Sanveer-Singh (ITG/ASG)" <[EMAIL PROTECTED]> on 01/04/2003 20:10:36 Please respond to [EMAIL PROTECTED] To: "'[EMAIL PROTECTED]'" <[EMAIL PROTECTED]> cc: Subject: re : WSIF Providers Dears, I have just written a WSIF custom provider for an in house api (jolt -> tuxedo), and also the extensions for wsdl. However, I am not sure how to customise our own application to use this. Since WSIFPluggableProviders is only to overide the provider for an existing namespace, my assumption is that a 'newInstance' of this new_provider would be needed in my app, although I have not tried that yet. But when getPort("HabPort") is called, a "Port 'HabPort' is not available and no alternative can be found" is thrown, though the wsdl seems appropriate. I have also added the following : "WSIFServiceImpl.addExtensionRegistry(new org.apache.wsif.wsdl.extensions.hab.HabExtensionRegistry())" but still get the same exception. Is there anything else I would need to add for WSIF to find this extension ? Does the WSIFServiceImpl class need some implementing ? In debug mode, I notice that the WSDL Definition has read the added binding but cannot identify the type. Could anyone possibly help me here ? Regards -------------------------------------------- Rick Bakhshi Middleware Specialist Belgacom, Brussels [EMAIL PROTECTED] -------------------------------------------- **** DISCLAIMER **** "This e-mail and any attachments thereto may contain information which is confidential and/or protected by intellectual property rights and are intended for the sole use of the recipient(s) named above. Any use of the information contained herein (including, but not limited to, total or partial reproduction, communication or distribution in any form) by persons other than the designated recipient(s) is prohibited. If you have received this e-mail in error, please notify the sender either by telephone or by e-mail and delete the material from any computer. Thank you for your cooperation." **** DISCLAIMER **** "This e-mail and any attachments thereto may contain information which is confidential and/or protected by intellectual property rights and are intended for the sole use of the recipient(s) named above. Any use of the information contained herein (including, but not limited to, total or partial reproduction, communication or distribution in any form) by persons other than the designated recipient(s) is prohibited. If you have received this e-mail in error, please notify the sender either by telephone or by e-mail and delete the material from any computer. Thank you for your cooperation."
