[JAVA] web.xml filters probleem

Pagina: 1
Acties:

  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02-2025
Ik heb hier een webapplicatie. Helemaal opgebouwd in Java, communiceert via Hibernate met een SQL Server 2000 databeest. Uitvoer gaat via maverick, opensource, vertaalt Java naar XML wat vervolgens door XSL omgevormd wordt naar HTML.

Het Java gedeelte draait op Macromedia Jrun. Middels de web.xml config file kun je (net zoals bij Tomcat) filters instellen. Deze filters worden heel simpel gedefinieerd:

code:
1
2
3
4
<filter>
  <filter-name>LoginControle</filter-name>
  <filter-class>bloeh.bla.LoginFilter</filter-class>
</filter>


Vervolgens kun je filter-mappings aanmaken, als volgt:
code:
1
2
3
4
<filter-mapping>
  <filter-name>LoginControle</filter-name>
  <url-pattern>/applicatie/*</url-pattern>
</filter-mapping>


Met als gevolg dat alle requests naar /applicatie/* (wildcard) middels de klasse LoginFilter gefilterd worden. In dit geval resulteert een eerste aanroep naar een loginscherm, want er is niet ingelogd.

Nu is de applicatie verdeelt in een 40tal commandos. Elk commando is gekoppeld aan een controller (in de maverick config). Tevens is er voor elk commando een filter-mapping aangemaakt. Bijv:
code:
1
2
3
4
5
6
7
8
<filter>
  <filter-name>WerknemerFilter</filter-name>
  <filter-class>bloeh.bla.WerknemerFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>WerknemerFilter</filter-name>
  <url-pattern>/applicatie/gegevens.m</url-pattern>
</filter-mapping>


Met als resultaat dat een aanroep naar gegevens.m gefilterd wordt door WerknemerFilter, die er weer voor zorgt dat niemand bij de gegevens kan, mits er voldoende rechten zijn.

De filters worden in volgorde afgehandeld. Een direct aanroep naar gegevens.m zal dus niet bij WerknemerFilter terecht komen omdat LoginFilter er voor zit. Pas als de gebruiker ingelogd is, en door LoginFilter heenkomt wordt WerknemerFilter aangeroepen.

Nu mijn probleem. Ik heb voor +/- 40 commandos zo'n mapping aangemaakt, naar verschillende filters (werknemer, manager, directeur). Alles werkt naar behoren, behalve: na 32 filter mappings werken de mappings niet meer. filtermapping nr 33 wordt niet meer afgedwongen, alleen LoginFilter is daarvoor nog werkzaam. Nr 34 en hoger worden door een verkeerd filter gefilterd ??

Bijv. filter-mapping 35 is gekoppeld aan DirecteurFilter, maar wordt gefilterd door WerknemerFilter, terwijl die nergens in het config bestand (web.xml) aan elkaar gekoppeld zijn.

Iemand een idee? Door het aantal wel werkende filters(32) vermoed ik een instelling in een configbestand, lijkt me typisch een standaard max waarde oid. Ik heb echter nog niks zinnig kunnen vinden.

  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

Ik heb hier net een testje gedraaid met JBoss.2.0/Tomcat 4.1.24 en ik kon zonder problemen meer dan 32 filters gebruiken in 1 web applicatie. Voor het gemak heb ik wel 5 keer dezelfde filterchain gebruikt (8 filters per keer), maar wel steeds met een ander URL pattern. Ook als ik iets doe met het laatste pattern dat genoemd wordt in web.xml wordt de request gewoon door alle filters heen gehaald.

Is dit misschien een eigenaardigheid van JRun? Heb je de mogelijkheid om het 'even' op Tomcat te proberen?

With the light in our eyes, it's hard to see.


  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02-2025
Morgen wel. Ik zal dat eens nader bekijken. Dat Jrun is best een geinig pakket, het rammelt alleen hier en daar.

Overigens klopt mijn openingspost al niet helemaal meer. Als ik de filters anders rangschik doen meer filters het, maar nog steeds niet allemaal. :?

  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02-2025
Mmmppfff, Tomcat doet het vrolijk wel. Dus een JRun specifiek probleem? Of misschien toch een config verschil tussen Tomcat en JRun?

[edit] de oplossing (gevonden in de donkere kelder van de Macromedia forums): JRun kan niet overweg met 16 - 64 filter-mappings. Zo lang er maar minder dan 16 of meer dan 64 filter-mappings zijn is er niks aan de hand. Het is een JRun bug die inmiddels gemeld is bij Macromedia.

[ Voor 52% gewijzigd door zneek op 15-07-2003 11:18 ]


  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

Mooi dat het duidelijk is geworden. Typisch foutje trouwens.

With the light in our eyes, it's hard to see.


  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02-2025
Bobco schreef op 15 juli 2003 @ 11:55:
Mooi dat het duidelijk is geworden. Typisch foutje trouwens.
Hoe bedoel je? typisch voor JRun? Ervaring mee?

Of typisch in de zin van raar?

  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

Het laatste. Ik ken JRun niet, maar heb niet de indruk dat het heel erg veel gebruikt wordt. Zijn er echte pluspunten te noemen van JRun ten opzichte van de andere app servers?

With the light in our eyes, it's hard to see.


  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02-2025
Over het gebruik weet ik niet zoveel, maar als ik zo op de JRun site en support site kijk is het wel een redelijk actief geheel.

Verder zijn pluspunten wat lastig. JRun is op sommige fronten wat knullig (zie hierboven :) ) maar wel erg compleet (EJB, geintegreede dbcon en pooling functionaliteit, Flash gateway enz. enz.) Verder hangen er wat leuke beheer interfaces aan, en is het makkelijk als NT-Service te draaien. De prijs valt ook best mee, ik geloof dat je voor de single CPU Enterprise editie 800 Euro betaald. Sommige klanten zijn bereid dat te betalen voor een grote naam (Macromedia). En het is nog altijd vele malen goedkoper dan de vergelijkbare oplossingen van bijv. IBM (Websphere)

  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

Tja, als je een app server kunt laten certificeren door Sun terwijl er dit soort fouten inzitten zegt ook wel iets over dat certificatie-proces ;) Ik heb ook even door de features heengebladerd en op zich ziet het er heel compleet en leuk uit. Iets wat mij opviel was het verhaaltje over de performance van de webcontainer: "Since its introduction in 1997, JRun is recognized as the fastest web container in the application server market."

Interessante opmerkingen. Ik ben eigenlijk al tijden op zoek naar een vergelijking van de performance van de verschillende app servers in verschillende scenario's (alleen web, web +EJB, met/zonder clustering etc). Helaas heb ik nog nooit iets gevonden wat echt bruikbaar is als vergelijkingsmateriaal.

With the light in our eyes, it's hard to see.

Pagina: 1