Okay. But I'm going to leave other tokens unreplaced till Monday.
Subbu
David Ward said the following on 11/26/2003 11:16 AM:
> This would certainly help.
>
> Subbu Allamaraju wrote:
>
>> Is this just for fragmentId? If so, I can do that in my next update.
>>
>> Subbu
>>
>> David Ward said the following on 11/26/2003 10:56 AM:
>>
>>>
>>>
>>> Subbu Allamaraju wrote:
>>>
>>>>
>>>> David,
>>>>
>>>>> The BEA Producer has "usesMethodGet" set on all its portlet
>>>>> descriptions at the moment (even when our portal sends
>>>>> methodGetSupported=false), hence our portal filters them all out
>>>>> when we register them. In the interests of the interop demo, could
>>>>> you provide some portlets with usesMethodGet=false?
>>>>
>>>>
>>>>
>>>> This is a bit tricky, since the producer does not really care about
>>>> usesMethodGet. We don't require portlet JSP developers to specify
>>>> this at all.
>>>>
>>>> I'll make it return false temporarily.
>>>>
>>>>> Also, what was the decision made on template parameters with no
>>>>> value? Currently these are being left in place by the BEA producer
>>>>> meaning that all URLS come back with "#{wsrp-fragmentid}" on the
>>>>> end of them.
>>>>
>>>>
>>>>
>>>> This issue is still open for the TC to consider.
>>>
>>>
>>> Again, if we want something demoable, can you make your producer
>>> instantiate /all/ {wsrp} parameters in its template? Those that don't
>>> have values such as fragment id could just be replaced with the empty
>>> string.
>>>
>>> Thanks
>>>
>>> David
>>>
>>>>
>>>>
>>>> Regards,
>>>>
>>>> Subbu
>>>>
>>>>> Subbu Allamaraju wrote:
>>>>>
>>>>>> David,
>>>>>>
>>>>>> During the WSDL call today, Andre and myself discussed this issue,
>>>>>> and he suggested that the producer could still include the
>>>>>> complete URL in the action so that the consumer can rewrite it if
>>>>>> it wants to. That seems reasonable for the producer, and it won't
>>>>>> break consumer that don't rewrite the markup.
>>>>>>
>>>>>> I'll update the producer and let you know.
>>>>>>
>>>>>> Regards,
>>>>>>
>>>>>> Subbu
>>>>>>
>>>>>> Subbu Allamaraju said the following on 11/26/2003 07:55 AM:
>>>>>>
>>>>>>> David,
>>>>>>>
>>>>>>> I see the following templates in the monitor:
>>>>>>>
>>>>>>> <ns0:templates>
>>>>>>> <ns0:defaultTemplate xsi:nil="1"/>
>>>>>>> <ns0:blockingActionTemplate>wsrp_rewrite?wsrp-urlType=blockingAction&amp;wsrp-navigationalState={wsrp-navigationalState}&amp;wsrp-interactionState={wsrp-interactionState}&amp;wsrp-mode={wsrp-mode}&amp;wsrp-windowState={wsrp-windowState}&amp;wsrp-fragmentID={wsrp-fragmentID}/wsrp_rewrite</ns0:blockingActionTemplate>
>>>>>>>
>>>>>>> <ns0:renderTemplate>wsrp_rewrite?wsrp-urlType=render&amp;wsrp-navigationalState={wsrp-navigationalState}&amp;wsrp-mode={wsrp-mode}&amp;wsrp-windowState={wsrp-windowState}&amp;wsrp-fragmentID={wsrp-fragmentID}/wsrp_rewrite</ns0:renderTemplate>
>>>>>>>
>>>>>>> <ns0:resourceTemplate>wsrp_rewrite?wsrp-urlType=resource&amp;wsrp-url={wsrp-url}&amp;wsrp-requiresRewrite={wsrp-requiresRewrite}/wsrp_rewrite</ns0:resourceTemplate>
>>>>>>> <ns0:secureDefaultTemplate xsi:nil="1"/>
>>>>>>> <ns0:secureBlockingActionTemplate><![CDATA[wsrp_rewrite?wsrp-urlType=blockingAction&wsrp-secureURL=true&wsrp-navigationalState={wsrp-navigationalState}&wsrp-interactionState={wsrp-interactionState}&wsrp-mode={wsrp-mode}&wsrp-windowState={wsrp-windowState}&wsrp-fragmentID={wsrp-fragmentID}/wsrp_rewrite]]></ns0:secureBlockingActionTemplate>
>>>>>>>
>>>>>>> <ns0:secureRenderTemplate>wsrp_rewrite?wsrp-urlType=render&amp;wsrp-secureURL=true&amp;wsrp-navigationalState={wsrp-navigationalState}&amp;wsrp-mode={wsrp-mode}&amp;wsrp-windowState={wsrp-windowState}&amp;wsrp-fragmentID={wsrp-fragmentID}/wsrp_rewrite</ns0:secureRenderTemplate>
>>>>>>>
>>>>>>> <ns0:secureResourceTemplate>wsrp_rewrite?wsrp-urlType=resource&amp;wsrp-secureURL=true&amp;wsrp-url={wsrp-url}&amp;wsrp-requiresRewrite={wsrp-requiresRewrite}/wsrp_rewrite</ns0:secureResourceTemplate>
>>>>>>> </ns0:templates>
>>>>>>>
>>>>>>> Firstly, I did not expect a consumer to send rewrite tokens in
>>>>>>> templates. These templates may be valid from the spec point of
>>>>>>> view, but can a consumer rewrite such URLs? Could you elaborate
>>>>>>> on how you plan to rewrite these URLs in your consumer?
>>>>>>>
>>>>>>> Secondly, to make sure that browser does not drop the query
>>>>>>> string in the action, our producer creates hidden fields for each
>>>>>>> parameter found in the query string. This explains the the action
>>>>>>> URL "wsrp_rewrite" and the hidden params.
>>>>>>>
>>>>>>> I need to look into those &s in the hidden fields.
>>>>>>>
>>>>>>> Regards,
>>>>>>>
>>>>>>> Subbu
>>>>>>>
>>>>>>> David Ward said the following on 11/26/2003 07:36 AM:
>>>>>>>
>>>>>>>> Thanks.
>>>>>>>>
>>>>>>>> Now I'm seeing the following in the methodGet portlet (not that
>>>>>>>> our Portal actually supports method get, but I thought these
>>>>>>>> results from our test client were interesting).
>>>>>>>>
>>>>>>>> <form name="firstStepForm" method="get" action="wsrp_rewrite">
>>>>>>>> <input type="hidden" name="wsrp-urlType" value="blockingAction"/>
>>>>>>>> <input type="hidden" name="*amp;wsrp-interactionState*"
>>>>>>>> value="firststep"/>
>>>>>>>> <input type="hidden" name="*amp;wsrp-fragmentID*"
>>>>>>>> value="*{wsrp-fragmentID}/wsrp_rewrite*"/>
>>>>>>>> <table>
>>>>>>>> <tr valign="top">
>>>>>>>> <td>First Field:</td>
>>>>>>>> <td>
>>>>>>>> <input type="text" name="0{actionForm.field1}"
>>>>>>>> value=""/>
>>>>>>>> </td>
>>>>>>>> </tr>
>>>>>>>> <tr valign="top">
>>>>>>>> <td>Second Field:</td>
>>>>>>>> <td>
>>>>>>>> <input type="text" name="0{actionForm.field2}"
>>>>>>>> value=""/>
>>>>>>>> </td>
>>>>>>>> </tr>
>>>>>>>> </table>
>>>>>>>> <br/>
>>>>>>>> <input type="submit" value="firststep"/>
>>>>>>>> </form>
>>>>>>>>
>>>>>>>> It seems that you are trying to 'parse' the templates we are
>>>>>>>> sending you into, expecting them to be in query string format,
>>>>>>>> and you are not recognizing "&" as a separator. I thought it
>>>>>>>> was only valid to 'instantiate' templates by expanding out the
>>>>>>>> variables enclosed in {}. As you can see, the templates we pass
>>>>>>>> expand out into rewritable URLs, so end with "/wsrp_rewrite".
>>>>>>>>
>>>>>>>> I would have expected this as the result from the method get
>>>>>>>> portlet:, given the template we sent you
>>>>>>>>
>>>>>>>> <form name="firstStepForm" method="get"
>>>>>>>> *action="wsrp_rewrite?wsrp-urlType=blockingAction&wsrp-interactionState=firststep&**amp;wsrp-fragmentID=**/wsrp_rewrite">*
>>>>>>>>
>>>>>>>> <table>
>>>>>>>> <tr valign="top">
>>>>>>>> <td>First Field:</td>
>>>>>>>> <td>
>>>>>>>> <input type="text" name="0{actionForm.field1}"
>>>>>>>> value=""/>
>>>>>>>> </td>
>>>>>>>> </tr>
>>>>>>>> <tr valign="top">
>>>>>>>> <td>Second Field:</td>
>>>>>>>> <td>
>>>>>>>> <input type="text" name="0{actionForm.field2}"
>>>>>>>> value=""/>
>>>>>>>> </td>
>>>>>>>> </tr>
>>>>>>>> </table>
>>>>>>>> <br/>
>>>>>>>> <input type="submit" value="firststep"/>
>>>>>>>> </form>
>>>>>>>>
>>>>>>>> Regards
>>>>>>>>
>>>>>>>> David
>>>>>>>>
>>>>>>>> Subbu Allamaraju wrote:
>>>>>>>>
>>>>>>>>> Hi David,
>>>>>>>>>
>>>>>>>>> Uploaded the fix just now. I was able to register our consumer
>>>>>>>>> with your producer last night. I'm going to try setup a page now.
>>>>>>>>>
>>>>>>>>> Regards,
>>>>>>>>>
>>>>>>>>> Subbu
>>>>>>>>>
>>>>>>>>> David Ward said the following on 11/26/2003 05:10 AM:
>>>>>>>>>
>>>>>>>>>> Hi Subbu
>>>>>>>>>>
>>>>>>>>>> It seems you have added a registration port now and your
>>>>>>>>>> portlets won't render without a registration handle. However,
>>>>>>>>>> when I try to register, I see the following request and
>>>>>>>>>> response. It seems your producer requires some sort of
>>>>>>>>>> authentication. Note also that the Content-Type response
>>>>>>>>>> header is still wrong!
>>>>>>>>>>
>>>>>>>>>> POST /producer/producer HTTP/1.1
>>>>>>>>>> Host: ukp16267.uk.oracle.com:5555
>>>>>>>>>> Connection: close, TE
>>>>>>>>>> TE: trailers, deflate, gzip, compress
>>>>>>>>>> User-Agent: RPT-HTTPClient/0.3-3
>>>>>>>>>> SOAPAction: "urn:oasis:names:tc:wsrp:v1:register"
>>>>>>>>>> Accept-Encoding: gzip, x-gzip, compress, x-compress
>>>>>>>>>> Content-type: text/xml; charset="utf-8"
>>>>>>>>>> Content-length: 1010
>>>>>>>>>>
>>>>>>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>>>>>>> <env:Envelope
>>>>>>>>>> xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
>>>>>>>>>> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>>>>>>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>>>>>>> xmlns:ns0="urn:oasis:names:tc:wsrp:v1:types">
>>>>>>>>>> <env:Body>
>>>>>>>>>> <ns0:register>
>>>>>>>>>> <ns0:consumerName>UKP16267</ns0:consumerName>
>>>>>>>>>>
>>>>>>>>>> <ns0:consumerAgent>OraclePortal.9.5</ns0:consumerAgent>
>>>>>>>>>>
>>>>>>>>>> <ns0:methodGetSupported>false</ns0:methodGetSupported>
>>>>>>>>>> <ns0:consumerModes>wsrp:view</ns0:consumerModes>
>>>>>>>>>> <ns0:consumerModes>wsrp:edit</ns0:consumerModes>
>>>>>>>>>> <ns0:consumerModes>wsrp:help</ns0:consumerModes>
>>>>>>>>>> <ns0:consumerModes>wsrp:preview</ns0:consumerModes>
>>>>>>>>>>
>>>>>>>>>> <ns0:consumerModes>urn:javax:portlet:mode:custom:edit_defaults</ns0:consumerModes>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> <ns0:consumerWindowStates>wsrp:normal</ns0:consumerWindowStates>
>>>>>>>>>>
>>>>>>>>>> <ns0:consumerWindowStates>wsrp:minimized</ns0:consumerWindowStates>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> <ns0:consumerWindowStates>wsrp:maximized</ns0:consumerWindowStates>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> <ns0:consumerWindowStates>wsrp:solo</ns0:consumerWindowStates>
>>>>>>>>>> </ns0:register>
>>>>>>>>>> </env:Body>
>>>>>>>>>> </env:Envelope>
>>>>>>>>>>
>>>>>>>>>> HTTP/1.1 200 OK
>>>>>>>>>> Date: Wed, 26 Nov 2003 12:04:45 GMT
>>>>>>>>>> Content-Length: 2854
>>>>>>>>>> Content-Type: text/xml; UTF-8
>>>>>>>>>> Connection: close
>>>>>>>>>> Server: WebLogic Server 8.1 SP2 Mon Nov 17 22:57:23 PST 2003
>>>>>>>>>> 311144 WebLogic Server 8.1 SP2 Mon Nov 17 22:57:23 PST 2003
>>>>>>>>>> 311144 WebLogic Server 8.1 SP2 Mon Nov 17 22:57:23 PST 2003
>>>>>>>>>> 311144
>>>>>>>>>> Via: 1.1 inet-nc01 (NetCache NetApp/5.3.1R3)
>>>>>>>>>>
>>>>>>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>>>>>>> <soapenv:Envelope
>>>>>>>>>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
>>>>>>>>>> <soapenv:Body>
>>>>>>>>>> <soapenv:Fault
>>>>>>>>>> xmlns:urn="urn:oasis:names:tc:wsrp:v1:types">
>>>>>>>>>> <faultcode>urn:OperationFailed</faultcode>
>>>>>>>>>> <faultstring>[EJB:010160]Security Violation: User:
>>>>>>>>>> '<anonymous>' has insufficient permission to access EJB:
>>>>>>>>>> type=<ejb>, application=producerApp, module=netuix.jar,
>>>>>>>>>> ejb=ConsumerRegistrationService, method=register,
>>>>>>>>>> methodInterface=Local,
>>>>>>>>>> signature={java.lang.String,java.lang.String,java.lang.String,java.util.Map}.</faultstring>
>>>>>>>>>>
>>>>>>>>>> <detail>
>>>>>>>>>>
>>>>>>>>>> <detail>com.bea.wsrp.faults.OperationFailedException:
>>>>>>>>>> [EJB:010160]Security Violation: User: '<anonymous>' has
>>>>>>>>>> insufficient permission to access EJB: type=<ejb>,
>>>>>>>>>> application=producerApp, module=netuix.jar,
>>>>>>>>>> ejb=ConsumerRegistrationService, method=register,
>>>>>>>>>> methodInterface=Local,
>>>>>>>>>> signature={java.lang.String,java.lang.String,java.lang.String,java.util.Map}.
>>>>>>>>>> at
>>>>>>>>>> com.bea.wsrp.producer.adapter.registration.PortalConsumerRegistrationServiceAdapter.register(PortalConsumerRegistrationServiceAdapter.java:59)
>>>>>>>>>> at
>>>>>>>>>> com.bea.wsrp.producer.handlers.registration.RegistrationServiceHandler.doRegister(RegistrationServiceHandler.java:185)
>>>>>>>>>> at
>>>>>>>>>> com.bea.wsrp.producer.handlers.registration.RegistrationServiceHandler.doService(RegistrationServiceHandler.java:119)
>>>>>>>>>> at
>>>>>>>>>> com.bea.wsrp.producer.WsrpServer.invokeHandler(WsrpServer.java:335)
>>>>>>>>>> at
>>>>>>>>>> com.bea.wsrp.producer.WsrpServer.doService(WsrpServer.java:297)
>>>>>>>>>> at
>>>>>>>>>> com.bea.wsrp.producer.WsrpServer.processServiceRequest(WsrpServer.java:210)
>>>>>>>>>> at
>>>>>>>>>> com.bea.wsrp.producer.WsrpServer.service(WsrpServer.java:169)
>>>>>>>>>> at
>>>>>>>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>>>>>>>>>> at
>>>>>>>>>> weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:971)
>>>>>>>>>> at
>>>>>>>>>> weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:402)
>>>>>>>>>> at
>>>>>>>>>> weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
>>>>>>>>>> at
>>>>>>>>>> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
>>>>>>>>>> at
>>>>>>>>>> com.bea.wsrp.producer.adapter.pageflow.WsrpPageflowFilter.doFilter(WsrpPageflowFilter.java:73)
>>>>>>>>>> at
>>>>>>>>>> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
>>>>>>>>>> at
>>>>>>>>>> weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6356)
>>>>>>>>>> at
>>>>>>>>>> weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
>>>>>>>>>> at
>>>>>>>>>> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
>>>>>>>>>> at
>>>>>>>>>> weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3635)
>>>>>>>>>> at
>>>>>>>>>> weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2585)
>>>>>>>>>> at
>>>>>>>>>> weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
>>>>>>>>>> at
>>>>>>>>>> weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)</detail>
>>>>>>>>>>
>>>>>>>>>> </detail>
>>>>>>>>>> </soapenv:Fault>
>>>>>>>>>> </soapenv:Body>
>>>>>>>>>> </soapenv:Envelope>
>>>>>>>>>>
>>>>>>>>>> Regards
>>>>>>>>>>
>>>>>>>>>> Dave
>>>>>>>>>>
>>>>>>>>>> Subbu Allamaraju wrote:
>>>>>>>>>>
>>>>>>>>>>> The producer is up now.
>>>>>>>>>>>
>>>>>>>>>>> The producer WSDL is at:
>>>>>>>>>>>
>>>>>>>>>>> http://wsrp.avitek.com:7001/producer/producer?WSDL
>>>>>>>>>>>
>>>>>>>>>>> The consumer is at:
>>>>>>>>>>>
>>>>>>>>>>> http://wsrp.avitel.com:7001/consumer/portal.portal (please
>>>>>>>>>>> note the change in port number).
>>>>>>>>>>>
>>>>>>>>>>> There are some known issues with the portlets that we
>>>>>>>>>>> obtained from a partner, and those will be fixed by tomorrow.
>>>>>>>>>>>
>>>>>>>>>>> Regards,
>>>>>>>>>>>
>>>>>>>>>>> Subbu
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> To unsubscribe from this mailing list (and be removed from
>>>>>>>>>>> the roster of the OASIS TC), go to
>>>>>>>>>>> http://www.oasis-open.org/apps/org/workgroup/wsrp-interop/members/leave_workgroup.php.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> ------------------------------------------------------------------------
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> *David Ward*
>>>>>>>>>> Principal Software Engineer
>>>>>>>>>> Portlet Technologies
>>>>>>>>>> Oracle Portal
>>>>>>>>>> Oracle European Development Centre
>>>>>>>>>> 520 Oracle Parkway
>>>>>>>>>> Thames Valley Park
>>>>>>>>>> Reading
>>>>>>>>>> Berkshire RG6 1RA
>>>>>>>>>> UK *Email:*
>>>>>>>>>> <mailto:>
>>>>>>>>>> *Tel:* +44 118 924 5079
>>>>>>>>>> *Fax:* +44 118 924 5005
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> To unsubscribe from this mailing list (and be removed from the
>>>>>>>>> roster of the OASIS TC), go to
>>>>>>>>> http://www.oasis-open.org/apps/org/workgroup/wsrp-interop/members/leave_workgroup.php.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> ------------------------------------------------------------------------
>>>>>>>>
>>>>>>>>
>>>>>>>> *David Ward*
>>>>>>>> Principal Software Engineer
>>>>>>>> Portlet Technologies
>>>>>>>> Oracle Portal
>>>>>>>> Oracle European Development Centre
>>>>>>>> 520 Oracle Parkway
>>>>>>>> Thames Valley Park
>>>>>>>> Reading
>>>>>>>> Berkshire RG6 1RA
>>>>>>>> UK *Email:*
>>>>>>>> <mailto:>
>>>>>>>> *Tel:* +44 118 924 5079
>>>>>>>> *Fax:* +44 118 924 5005
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> To unsubscribe from this mailing list (and be removed from the
>>>>>>> roster of the OASIS TC), go to
>>>>>>> http://www.oasis-open.org/apps/org/workgroup/wsrp-interop/members/leave_workgroup.php.
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> To unsubscribe from this mailing list (and be removed from the
>>>>>> roster of the OASIS TC), go to
>>>>>> http://www.oasis-open.org/apps/org/workgroup/wsrp-interop/members/leave_workgroup.php.
>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>> ------------------------------------------------------------------------
>>>>>
>>>>>
>>>>> *David Ward*
>>>>> Principal Software Engineer
>>>>> Portlet Technologies
>>>>> Oracle Portal
>>>>> Oracle European Development Centre
>>>>> 520 Oracle Parkway
>>>>> Thames Valley Park
>>>>> Reading
>>>>> Berkshire RG6 1RA
>>>>> UK *Email:*
>>>>> <mailto:>
>>>>> *Tel:* +44 118 924 5079
>>>>> *Fax:* +44 118 924 5005
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> To unsubscribe from this mailing list (and be removed from the
>>>> roster of the OASIS TC), go to
>>>> http://www.oasis-open.org/apps/org/workgroup/wsrp-interop/members/leave_workgroup.php.
>>>>
>>>>
>>>
>>> --
>>> ------------------------------------------------------------------------
>>>
>>> *David Ward*
>>> Principal Software Engineer
>>> Portlet Technologies
>>> Oracle Portal
>>> Oracle European Development Centre
>>> 520 Oracle Parkway
>>> Thames Valley Park
>>> Reading
>>> Berkshire RG6 1RA
>>> UK
>>> *Email:* <mailto:>
>>> *Tel:* +44 118 924 5079
>>> *Fax:* +44 118 924 5005
>>>
>>>
>>
>>
>>
>> To unsubscribe from this mailing list (and be removed from the roster
>> of the OASIS TC), go to
>> http://www.oasis-open.org/apps/org/workgroup/wsrp-interop/members/leave_workgroup.php.
>>
>>
>
> --
> ------------------------------------------------------------------------
>
> *David Ward*
> Principal Software Engineer
> Portlet Technologies
> Oracle Portal
> Oracle European Development Centre
> 520 Oracle Parkway
> Thames Valley Park
> Reading
> Berkshire RG6 1RA
> UK
> *Email:* <mailto:>
> *Tel:* +44 118 924 5079
> *Fax:* +44 118 924 5005
>
>