Dekuji Petru Ferschmannovi
Funguje - request wrapper se tvari, ze SOAPAction header existuje (a nasledujici AXIS servlet uz nema problem):
public class TriggerFilter implements Filter {
private static String soapActionHeader = "SOAPAction";
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpReq = (HttpServletRequest)request;
if (httpReq.getHeader(soapActionHeader) == null)
{
// provide request wrapper, which returns SOAP action header
httpReq = new TriggerRequest(httpReq);
}
chain.doFilter(httpReq, response);
}
...
class TriggerRequest extends HttpServletRequestWrapper {
TriggerRequest (HttpServletRequest request)
{
super(request);
}
public String getHeader(String name)
{
if (name.equals(soapActionHeader)) { return ""; }
return super.getHeader(name);
}
}
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] On Behalf Of Petr Ferschmann
Sent: Tuesday, April 18, 2006 10:43 AM
To: Java
Subject: Re: Pridat http header
Dobrý den,
vy, ale ve filtru můžete vytvořit nový request, v něm upravit co
potřebujete a zbytek metod předat původnímu requestu. Tj. vytvoříte
proxy.
S pozdravem
Petr Ferschmann
Havelka, Raimund píše v Út 18. 04. 2006 v 10:04 +0200:
> Ahoj,
> jak zmenit URL jsem nasel viz. attach.
>
> Me trapi, jak pridat do requestu http header:
> Kdyz pouziji Filter/Servlet, tak HTTP request menit nemuzu (krome URL
> a parameters);
>
> Muzete, prosim, poradit?
>
> Raimund
>
> Apache umi modifikovat header. Ma v konfiguraci direktivu:
> RequestHeader set/add/...
>
> V Tomcatu jsem to nenasel ...
>
>
>
>
>
>
>
>
>
>
>
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> On Behalf Of Martin Majer
> Sent: Sunday, April 16, 2006 6:53 PM
> To: Java
> Subject: Změna URL
>
>
>
>
> Ahoj,
> mám URL třeba http://www.adresa.cz/view/test a potřeboval bych ho
> nějak změnit na http://www.adresa.cz/view?show=test. Jak se to dá
> udělat? Pomocí servlet filtrů?
> E-mailová zpráva příloha
>
> > -------- Přeposlaná zpráva --------
> > Od: Havelka, Raimund <[EMAIL PROTECTED]>
> > Komu: Java <[email protected]>, Martin Majer <[EMAIL PROTECTED]>
> > Předmět: RE: Změna URL
> > Datum: Tue, 18 Apr 2006 08:21:06 +0200
> >
> >
> > Ahoj, ve filtru se muze zmenit URL:
> >
> > filter class:
> >
> > public class TriggerFilter implements Filter {
> >
> > /**
> > * @param request the current request
> > * @param response the current response
> > * @param chain request handler chain
> > * @exception java.io.IOException
> > * @exception javax.servlet.ServletException */
> > public void doFilter(ServletRequest request, ServletResponse
> > response, FilterChain chain) throws IOException, ServletException {
> >
> > HttpServletRequest httpReq = (HttpServletRequest) request;
> >
> > StringBuffer regUrl = httpReq.getRequestURL();
> >
> > reqUrl = ...
> >
> > chain.doFilter(request, response);
> > }
> >
> >
> > web.xml:
> > <filter>
> > <filter-name>TriggerFilter</filter-name>
> >
> > <filter-class>provgw.triggerhandler.TriggerFilter</filter-class>
> > </filter>
> >
> > <filter-mapping>
> > <filter-name>TriggerFilter</filter-name>
> > <servlet-name>AxisServlet</servlet-name>
> > </filter-mapping>
> >
> > <filter-mapping>
> > <filter-name>TriggerFilter</filter-name>
> > <url-pattern>/services/TriggerHandlerService</url-pattern>
> > </filter-mapping>
> >
> >
> > doc:
> > javax.servlet.http
> > Interface HttpServletRequest
> > getRequestURL
> >
> > public java.lang.StringBuffer getRequestURL()
> > Reconstructs the URL the client used to make the request.
> > The returned URL contains a protocol, server name, port
> > number, and server path, but it does not include query
> > string parameters.
> >
> > Because this method returns a StringBuffer, not a string,
> > you can modify the URL easily, for example, to append query
> > parameters.
> >
> > This method is useful for creating redirect messages and for
> > reporting errors.
> >
> > Returns:
> > a StringBuffer object containing the reconstructed URL
> >
> >
> >
> >
> > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> > On Behalf Of Martin Majer
> > Sent: Sunday, April 16, 2006 6:53 PM
> > To: Java
> > Subject: Změna URL
> >
> >
> >
> >
> > Ahoj,
> > mám URL třeba http://www.adresa.cz/view/test a potřeboval bych ho
> > nějak změnit na http://www.adresa.cz/view?show=test. Jak se to dá
> > udělat? Pomocí servlet filtrů?
--
Petr Ferschmann
SoftEU s.r.o.
-----------------------------------
Sady Petatricatniku 31
301 00 Plzen
Czech Republic
-----------------------------------
Phone: +420 373 729 300
Fax: +420 373 729 301
Cell: +420 775 638 008
