Delen via


Zelfstudie: Verbinding maken met een beheerde gateway voor Spring in Azure Container Apps (preview)

Gateway voor Spring biedt een efficiënte en krachtige manier om API-aanvragen te routeren, beheren en verwerken als onderdeel van een microservicesarchitectuur. Het fungeert als een API-gateway die externe aanvragen naar verschillende services routeert, verschillende mogelijkheden toevoegt, zoals filteren, taakverdeling en meer. In dit artikel leert u hoe u een gateway maakt die aanvragen omverwijst naar uw container-apps.

In deze zelfstudie leert u het volgende:

  • Een gateway maken voor Spring Java-onderdeel
  • De gateway voor spring bijwerken met aangepaste routes om aanvragen om te leiden naar container-apps

Belangrijk

In deze zelfstudie worden services gebruikt die van invloed kunnen zijn op uw Azure-factuur. Als u besluit stapsgewijs te volgen, moet u ervoor zorgen dat u de resources verwijdert die in dit artikel worden weergegeven om onverwachte facturering te voorkomen.

Vereisten

  • Een Azure-account met een actief abonnement. Als u er nog geen hebt, kunt u er gratis een maken.
  • Azure CLI.

Overwegingen

Wanneer u in Gateway for Spring in Azure Container Apps werkt, moet u rekening houden met de volgende details:

Artikel Uitleg
Scope De gateway voor Spring wordt uitgevoerd in dezelfde omgeving als de verbonden container-app.
Bronnen De toewijzing van containerresources voor Gateway voor Spring is opgelost, het aantal CPU-kernen is 0,5 en de geheugengrootte is 1Gi.
Prijzen De gateway voor Spring-facturering valt onder de prijzen op basis van verbruik. Resources die door beheerde Java-onderdelen worden verbruikt, worden gefactureerd tegen de actieve/niet-actieve tarieven. U kunt onderdelen verwijderen die niet meer worden gebruikt om de facturering te stoppen.

Instellingen

Voordat u met de gateway voor Spring gaat werken, moet u eerst de vereiste resources maken.

Voer de volgende opdrachten uit om uw resourcegroep en Container Apps-omgeving te maken.

  1. Maak variabelen ter ondersteuning van uw toepassingsconfiguratie. Deze waarden worden voor u verstrekt voor de doeleinden van deze les. In deze les gebruiken we het eindpunt van de beheerder voor de spring-voorbeeld-app.

    export LOCATION=eastus
    export RESOURCE_GROUP=my-spring-cloud-resource-group
    export ENVIRONMENT=my-spring-cloud-environment
    export JAVA_COMPONENT_NAME=mygateway
    export APP_NAME=myapp
    export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-admin-for-spring-client:latest"
    
    Variabele Beschrijving
    LOCATION De Azure-regiolocatie waar u uw container-app en Java-onderdeel maakt.
    ENVIRONMENT De naam van de Azure Container Apps-omgeving voor uw demotoepassing.
    RESOURCE_GROUP De naam van de Azure-resourcegroep voor uw demotoepassing.
    JAVA_COMPONENT_NAME De naam van het Java-onderdeel dat is gemaakt voor uw container-app. In dit geval maakt u een gateway voor spring Java-onderdeel.
    IMAGE De containerinstallatiekopieën die in uw container-app worden gebruikt.
  2. Meld u aan bij Azure met de Azure CLI.

    az login
    
  3. Maak een resourcegroep.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  4. Maak uw container-apps-omgeving.

    az containerapp env create \
        --name $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    

    Deze omgeving wordt gebruikt om zowel de gateway voor het Spring-onderdeel als uw container-app te hosten.

De gateway gebruiken voor het Spring Java-onderdeel

Nu u een Container Apps-omgeving hebt, kunt u uw container-app maken met behulp van een gateway voor Spring Java-onderdelen om aanvragen naar deze onderdelen te routeren.

  1. Maak de gateway voor het Spring Java-onderdeel.

    az containerapp env java-component gateway-for-spring create \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $JAVA_COMPONENT_NAME \
    
  2. Maak de container-app met de FQDN (Fully Qualified Domain Name).

    az containerapp create \
        --name $APP_NAME \
        --resource-group $RESOURCE_GROUP \
        --environment $ENVIRONMENT \
        --image $IMAGE \
        --ingress external \
        --target-port 8080 \
        --query properties.configuration.ingress.fqdn
    

    Met deze opdracht wordt de URL geretourneerd van uw container-app die configuratiegegevens verbruikt. Kopieer de URL naar een teksteditor, zodat u deze in de volgende stap kunt gebruiken.

De gatewayroutes bijwerken om aanvragen te routeren

  1. Maak een YAML-bestand met de volgende inhoud. Vervang door <MYAPP_URL> de FQDN van de container-app uit de vorige stap.

    springCloudGatewayRoutes:
    - id: "route1"
      uri: "<MYAPP_URL>"
      predicates:
        - "Path=/myapp/{path}"
      filters:
        - "SetPath=/actuator/{path}"
    
  2. Voer de volgende opdracht uit om de gateway voor spring-onderdeel bij te werken met uw routeconfiguratie.

    az containerapp env java-component gateway-for-spring update \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $JAVA_COMPONENT_NAME \ 
        --route-yaml <PTAH_TO_ROUTE_YAML_FILE> \
        --query properties.ingress.fqdn
    

    Met deze opdracht wordt de gatewayroute bijgewerkt en wordt de URL geretourneerd van uw gateway die configuratiegegevens verbruikt.

    De opdracht retourneert de URL van de gateway. Als u deze URL bezoekt met het pad /myapp/health , moet de aanvraag worden doorgestuurd naar het eindpunt van actuator/health uw app, die wordt geretourneerd {"status":"UP","groups":["liveness","readiness"]}.

Resources opschonen

De resources die in deze zelfstudie zijn gemaakt, hebben een effect op uw Azure-factuur. Als u deze services niet op de lange termijn gaat gebruiken, voert u de volgende opdracht uit om alles te verwijderen dat in deze zelfstudie is gemaakt.

az group delete --resource-group $RESOURCE_GROUP

Bestandsindeling van route

De gateway voor Spring-onderdeel ondersteunt het definiëren van routes via eigenschappen met id, URI, predicaten en filters. Zie de Spring Cloud Gateway-documentatie voor meer informatie. Hieronder volgt een voorbeeld van een YAML-bestand dat laat zien hoe u deze eigenschappen configureert.

  springCloudGatewayRoutes:
  - id: "route1"
    uri: "https://otherjavacomponent.myenvironment.test.net"
    predicates:
      - "Path=/v1/{path}"
      - "After=2024-01-01T00:00:00.000-00:00[America/Denver]"
    filters:
      - "SetPath=/{path}"
  - id: "route2"
    uri: "https://otherjavacomponent.myenvironment.test.net"
    predicates:
      - "Path=/v2/{path}"
      - "After=2024-01-01T00:00:00.000-00:00[America/Denver]"
    filters:
      - "SetPath=/{path}"

Toegestane configuratielijst voor uw gateway voor Spring(#configurable-properties)

In de volgende tabel worden de eigenschappen van het gatewayonderdeel beschreven die u voor uw app kunt configureren. Zie Algemene toepassingseigenschappen van Spring Cloud Gateway voor meer informatie.

Eigenschapsnaam Beschrijving Default value
spring.cloud.gateway.default-filters Lijst met filterdefinities die op elke route worden toegepast.
spring.cloud.gateway.enabled Hiermee schakelt u de gatewayfunctionaliteit in. true
spring.cloud.gateway.fail-on-route-definition-error Optie om te mislukken bij routedefinitiefouten, wordt standaard ingesteld op waar. Anders wordt een waarschuwing vastgelegd. true
spring.cloud.gateway.handler-mapping.order De volgorde van RoutePredicateHandlerMapping. 1
spring.cloud.gateway.loadbalancer.use404 false
spring.cloud.gateway.discovery.locator.enabled Vlag waarmee gatewayintegratie mogelijk DiscoveryClient is. false
spring.cloud.gateway.discovery.locator.filters
spring.cloud.gateway.discovery.locator.include-expression SpEL-expressie die evalueert of een service moet worden opgenomen in gatewayintegratie of niet. De standaardwaarde is true. true
spring.cloud.gateway.discovery.locator.lower-case-service-id Optie om kleine letters serviceId in predicaten en filters te gebruiken. De standaardwaarde is false. Handig bij Eureka wanneer het automatisch hoofdletters serviceIdbevat. Dus zou MYSERVICE overeenkomen met /myservice/** false
spring.cloud.gateway.discovery.locator.predicates
spring.cloud.gateway.discovery.locator.route-id-prefix Het voorvoegsel voor de routeId, wordt standaard ingesteld op discoveryClient.getClass().getSimpleName() + "_". Service-id wordt toegevoegd om de routeId.
spring.cloud.gateway.discovery.locator.url-expression SpEL-expressie waarmee de URI voor elke route wordt gemaakt. De standaardwaarde is 'lb://'+serviceId. 'lb://'+serviceId
spring.cloud.gateway.filter.add-request-header.enabled Hiermee schakelt u het add-request-header filter in. true
spring.cloud.gateway.filter.add-request-parameter.enabled Hiermee schakelt u het add-request-parameter filter in. true
spring.cloud.gateway.filter.add-response-header.enabled Hiermee schakelt u het add-response-header filter in. true
spring.cloud.gateway.filter.circuit-breaker.enabled Hiermee schakelt u het circuit-breaker filter in. true
spring.cloud.gateway.filter.dedupe-response-header.enabled Hiermee schakelt u het dedupe-response-header filter in. true
spring.cloud.gateway.filter.fallback-headers.enabled Hiermee schakelt u het fallback-headers filter in. true
spring.cloud.gateway.filter.hystrix.enabled Hiermee schakelt u het hystrix filter in. true
spring.cloud.gateway.filter.json-to-grpc.enabled Hiermee schakelt u het JSON-filter gRPC in. true
spring.cloud.gateway.filter.local-response-cache.enabled Hiermee schakelt u het local-response-cache filter in. false
spring.cloud.gateway.filter.local-response-cache.request.no-cache-strategy
spring.cloud.gateway.filter.local-response-cache.size Maximale grootte van de cache voor het verwijderen van vermeldingen voor deze route in KB, MB en GB.
spring.cloud.gateway.filter.local-response-cache.time-to-live Tijd voor het verlopen van een cachevermelding, uitgedrukt in s seconden, m voor minuten en h uren. 5m
spring.cloud.gateway.filter.map-request-header.enabled Hiermee schakelt u het map-request-header filter in. true
spring.cloud.gateway.filter.modify-request-body.enabled Hiermee schakelt u het modify-request-body filter in. true
spring.cloud.gateway.filter.modify-response-body.enabled Hiermee schakelt u het modify-response-body filter in. true
spring.cloud.gateway.filter.prefix-path.enabled Hiermee schakelt u het prefix-path filter in. true
spring.cloud.gateway.filter.preserve-host-header.enabled Hiermee schakelt u het preserve-host-header filter in. true
spring.cloud.gateway.filter.redirect-to.enabled Hiermee schakelt u het redirect-to filter in. true
spring.cloud.gateway.filter.remove-hop-by-hop.headers
spring.cloud.gateway.filter.remove-hop-by-hop.order 0
spring.cloud.gateway.filter.remove-request-header.enabled Hiermee schakelt u het remove-request-header filter in. true
spring.cloud.gateway.filter.remove-request-parameter.enabled Hiermee schakelt u het remove-request-parameter filter in. true
spring.cloud.gateway.filter.remove-response-header.enabled Hiermee schakelt u het remove-response-header filter in. true
spring.cloud.gateway.filter.request-header-size.enabled Hiermee schakelt u het request-header-size filter in. true
spring.cloud.gateway.filter.request-header-to-request-uri.enabled Hiermee schakelt u het request-header-to-request-uri filter in. true
spring.cloud.gateway.filter.request-rate-limiter.default-key-resolver
spring.cloud.gateway.filter.request-rate-limiter.default-rate-limiter
spring.cloud.gateway.filter.request-rate-limiter.enabled Hiermee schakelt u het request-rate-limiter filter in. true
spring.cloud.gateway.filter.request-size.enabled Hiermee schakelt u het request-size filter in. true
spring.cloud.gateway.filter.retry.enabled Hiermee schakelt u het retry filter in. true
spring.cloud.gateway.filter.rewrite-location-response-header.enabled Hiermee schakelt u het rewrite-location-response-header filter in. true
spring.cloud.gateway.filter.rewrite-location.enabled Hiermee schakelt u het rewrite-location filter in. true
spring.cloud.gateway.filter.rewrite-path.enabled Hiermee schakelt u het rewrite-path filter in. true
spring.cloud.gateway.filter.rewrite-request-parameter.enabled Hiermee schakelt u het rewrite-request-parameter filter in. true
spring.cloud.gateway.filter.rewrite-response-header.enabled Hiermee schakelt u het rewrite-response-header filter in. true
spring.cloud.gateway.filter.save-session.enabled Hiermee schakelt u het save-session filter in. true
spring.cloud.gateway.filter.secure-headers.content-security-policy default-src 'self' https:; font-src 'self' https: data:; img-src 'self' https: data:; object-src 'none'; script-src https:; style-src 'self' https: 'unsafe-inline'
spring.cloud.gateway.filter.secure-headers.content-type-options nosniff
spring.cloud.gateway.filter.secure-headers.disable
spring.cloud.gateway.filter.secure-headers.download-options noopen
spring.cloud.gateway.filter.secure-headers.enabled Hiermee schakelt u het secure-headers filter in. true
spring.cloud.gateway.filter.secure-headers.frame-options DENY
spring.cloud.gateway.filter.secure-headers.permitted-cross-domain-policies none
spring.cloud.gateway.filter.secure-headers.referrer-policy no-referrer
spring.cloud.gateway.filter.secure-headers.strict-transport-security max-age=631138519
spring.cloud.gateway.filter.secure-headers.xss-protection-header 1 ; mode=block
spring.cloud.gateway.filter.set-path.enabled Hiermee schakelt u het set-path filter in. true
spring.cloud.gateway.filter.set-request-header.enabled Hiermee schakelt u het set-request-header filter in. true
spring.cloud.gateway.filter.set-request-host-header.enabled Hiermee schakelt u het set-request-host-header filter in. true
spring.cloud.gateway.filter.set-response-header.enabled Hiermee schakelt u het set-response-header filter in. true
spring.cloud.gateway.filter.set-status.enabled Hiermee schakelt u het set-status filter in. true
spring.cloud.gateway.filter.strip-prefix.enabled Hiermee schakelt u het strip-prefix filter in. true
spring.cloud.gateway.forwarded.enabled Hiermee schakelt u het ForwardedHeadersFilter. true
spring.cloud.gateway.global-filter.adapt-cached-body.enabled Hiermee schakelt u het adapt-cached-body globale filter in. true
spring.cloud.gateway.global-filter.forward-path.enabled Hiermee schakelt u het forward-path globale filter in. true
spring.cloud.gateway.global-filter.forward-routing.enabled Hiermee schakelt u het forward-routing globale filter in. true
spring.cloud.gateway.global-filter.load-balancer-client.enabled Hiermee schakelt u het load-balancer-client globale filter in. true
spring.cloud.gateway.global-filter.local-response-cache.enabled Hiermee schakelt u het local-response-cache filter in voor alle routes, waarmee u een specifieke configuratie op routeniveau kunt toevoegen met behulp van een LocalResponseCache filter. true
spring.cloud.gateway.global-filter.netty-routing.enabled Hiermee schakelt u het netty-routing global filter in. true
spring.cloud.gateway.global-filter.netty-write-response.enabled Hiermee schakelt u het netty-write-response globale filter in. true
spring.cloud.gateway.global-filter.reactive-load-balancer-client.enabled Hiermee schakelt u het reactive-load-balancer-client globale filter in. true
spring.cloud.gateway.global-filter.remove-cached-body.enabled Hiermee schakelt u het remove-cached-body globale filter in. true
spring.cloud.gateway.global-filter.route-to-request-url.enabled Hiermee schakelt u het route-to-request-url globale filter in. true
spring.cloud.gateway.global-filter.websocket-routing.enabled Hiermee schakelt u het websocket-routing globale filter in. true
spring.cloud.gateway.globalcors.add-to-simple-url-handler-mapping Als globale CORS-configuratie moet worden toegevoegd aan de URL-handler. false
spring.cloud.gateway.globalcors.cors-configurations
spring.cloud.gateway.redis-rate-limiter.burst-capacity-header De naam van de header die de configuratie van de burst-capaciteit retourneert. X-RateLimit-Burst-Capacity
spring.cloud.gateway.redis-rate-limiter.config
spring.cloud.gateway.redis-rate-limiter.include-headers Of kopteksten met snelheidslimietinformatie al dan niet moeten worden opgenomen. De standaardwaarde is true. true
spring.cloud.gateway.redis-rate-limiter.remaining-header De naam van de header die het aantal resterende aanvragen retourneert tijdens de huidige seconde. X-RateLimit-Remaining
spring.cloud.gateway.redis-rate-limiter.replenish-rate-header De naam van de header die de configuratie van de aanvullingssnelheid retourneert. X-RateLimit-Replenish-Rate
spring.cloud.gateway.redis-rate-limiter.requested-tokens-header De naam van de header die de configuratie van de aangevraagde tokens retourneert. X-RateLimit-Requested-Tokens
spring.cloud.gateway.restrictive-property-accessor.enabled Hiermee beperkt u de toegang tot methoden en eigenschappen in SpEL. true
spring.cloud.gateway.predicate.after.enabled Hiermee schakelt u het after predicaat in. true
spring.cloud.gateway.predicate.before.enabled Hiermee schakelt u het before predicaat in. true
spring.cloud.gateway.predicate.between.enabled Hiermee schakelt u het between predicaat in. true
spring.cloud.gateway.predicate.cloud-foundry-route-service.enabled Hiermee schakelt u het cloud-foundry-route-service predicaat in. true
spring.cloud.gateway.predicate.cookie.enabled Hiermee schakelt u het cookie predicaat in. true
spring.cloud.gateway.predicate.header.enabled Hiermee schakelt u het header predicaat in. true
spring.cloud.gateway.predicate.host.enabled Hiermee schakelt u het host predicaat in. true
spring.cloud.gateway.predicate.host.include-port Neem de poort op die overeenkomt met de hostnaam. true
spring.cloud.gateway.predicate.method.enabled Hiermee schakelt u het method predicaat in. true
spring.cloud.gateway.predicate.path.enabled Hiermee schakelt u het path predicaat in. true
spring.cloud.gateway.predicate.query.enabled Hiermee schakelt u het query predicaat in. true
spring.cloud.gateway.predicate.read-body.enabled Hiermee schakelt u het read-body predicaat in. true
spring.cloud.gateway.predicate.remote-addr.enabled Hiermee schakelt u het remote-addr predicaat in. true
spring.cloud.gateway.predicate.weight.enabled Hiermee schakelt u het weight predicaat in. true
spring.cloud.gateway.predicate.xforwarded-remote-addr.enabled Hiermee schakelt u het xforwarded-remote-addr predicaat in. true
spring.cloud.gateway.set-status.original-status-header-name De naam van de header die de HTTP-code van de geproxiede aanvraag bevat.
spring.cloud.gateway.streaming-media-types
spring.cloud.gateway.x-forwarded.enabled Als de XForwardedHeadersFilter optie is ingeschakeld. true
spring.cloud.gateway.x-forwarded.for-append Als toevoegen X-Forwarded-For als een lijst is ingeschakeld. true
spring.cloud.gateway.x-forwarded.for-enabled Als X-Forwarded-For dit is ingeschakeld. true
spring.cloud.gateway.x-forwarded.host-append Als toevoegen X-Forwarded-Host als een lijst is ingeschakeld. true
spring.cloud.gateway.x-forwarded.host-enabled Als X-Forwarded-Host dit is ingeschakeld. true
spring.cloud.gateway.x-forwarded.order De volgorde van de XForwardedHeadersFilter. 0
spring.cloud.gateway.x-forwarded.port-append Als toevoegen X-Forwarded-Port als een lijst is ingeschakeld. true
spring.cloud.gateway.x-forwarded.port-enabled Als X-Forwarded-Port dit is ingeschakeld. true
spring.cloud.gateway.x-forwarded.prefix-append Als toevoegen X-Forwarded-Prefix als een lijst is ingeschakeld. true
spring.cloud.gateway.x-forwarded.prefix-enabled Als X-Forwarded-Prefix dit is ingeschakeld. true
spring.cloud.gateway.x-forwarded.proto-append Als toevoegen X-Forwarded-Proto als een lijst is ingeschakeld. true
spring.cloud.gateway.x-forwarded.proto-enabled Als X-Forwarded-Proto dit is ingeschakeld. true
spring.cloud.gateway.httpclient.compression Hiermee schakelt u compressie voor Netty HttpClientin. false
spring.cloud.gateway.httpclient.connect-timeout De verbonden time-out in millis. De standaardwaarde is 30s.
spring.cloud.gateway.httpclient.max-header-size De maximale grootte van de antwoordheader.
spring.cloud.gateway.httpclient.max-initial-line-length De maximale lengte van de initiële lijn.
spring.cloud.gateway.httpclient.pool.acquire-timeout Alleen voor type FIXED, de maximale tijd in millis om te wachten op het verkrijgen.
spring.cloud.gateway.httpclient.pool.eviction-interval Voer regelmatig verwijderingscontroles uit op de achtergrond met een opgegeven interval. Standaard uitgeschakeld ({@link Duration#ZERO}). 0
spring.cloud.gateway.httpclient.pool.max-connections Alleen voor het type OPGELOST, het maximum aantal verbindingen voordat wordt gestart met het ophalen van bestaande verbindingen.
spring.cloud.gateway.httpclient.pool.max-idle-time Tijd in millis waarna het kanaal wordt gesloten. Als NULL, is er geen maximale niet-actieve tijd.
spring.cloud.gateway.httpclient.pool.max-life-time Duur waarna het kanaal is gesloten. Als NULLer geen maximale levensduur is.
spring.cloud.gateway.httpclient.pool.metrics Hiermee kunnen metrische gegevens van kanaalgroepen worden verzameld en geregistreerd in Micrometer. Standaard uitgeschakeld. false
spring.cloud.gateway.httpclient.pool.name De naam van de kaart van de kanaalgroep, wordt standaard ingesteld op proxy. proxy
spring.cloud.gateway.httpclient.pool.type Het type pool dat moet HttpClient worden gebruikt, wordt standaard ingesteld op ELASTIC.
spring.cloud.gateway.httpclient.response-timeout De time-out van het antwoord.
spring.cloud.gateway.httpclient.ssl.close-notify-flush-timeout Time-out voor SSL-flush close_notify . De standaardwaarde 3000 ms. 3000ms
spring.cloud.gateway.httpclient.ssl.close-notify-read-timeout Time-out voor SSL-leesbewerking close_notify . De standaardwaarde is 0 ms. 0
spring.cloud.gateway.httpclient.ssl.handshake-timeout Time-out voor SSL-handshake. De standaardwaarde is 10000 ms.. 10000ms
spring.cloud.gateway.httpclient.ssl.use-insecure-trust-manager Installeert de netty InsecureTrustManagerFactory. Dit is onveilig en is niet geschikt voor productie. false
spring.cloud.gateway.httpclient.websocket.max-frame-payload-length Maximale lengte van framelading.
spring.cloud.gateway.httpclient.websocket.proxy-ping Proxy-pingframes naar downstreamservices. De standaardwaarde is true. true
spring.cloud.gateway.httpclient.wiretap Hiermee schakelt u wiretap-foutopsporing voor Netty HttpClientin. false
spring.cloud.gateway.httpserver.wiretap Hiermee schakelt u wiretap-foutopsporing voor Netty HttpServerin. false
spring.cloud.gateway.metrics.enabled Hiermee schakelt u het verzamelen van metrische gegevens in. false
spring.cloud.gateway.metrics.prefix Het voorvoegsel van alle metrische gegevens die door de gateway worden verzonden. spring.cloud.gateway
spring.cloud.gateway.metrics.tags Tagstoewijzing die is toegevoegd aan metrische gegevens.
spring.cloud.gateway.observability.enabled Als ondersteuning voor Micrometer Waarneembaarheid moet worden ingeschakeld. true

Algemene configuraties

In de volgende lijst worden algemene configuraties beschreven:

  • Gerelateerde configuraties voor logboekregistratie:
    • logging.level.*
    • logging.group.*
    • Alle andere configuraties onder logging.* naamruimte moeten verboden zijn. Het schrijven van logboekbestanden met behulp van logging.file moet bijvoorbeeld verboden zijn.