Espero que alguém já tenha entendido isso. Acabei de instalar o Geoserver 2.9 em uma distribuição baunilha do Ubuntu 16.04. O método Geoserver 2.8 de habilitar o CORS com a classe shanbe.hezoun não funciona mais com o Jetty 9.2.13.
Há menções de que o suporte ao CORS já está incluído no Jetty 9.2.13 no jetty-servlets.jar.
A lib do Jetty que é compilada com o Geoserver contém um jetty-servlet-9.2.13.v20150730.jar no geoserver / lib, mas não o jetty-servlets.9.2.13.v20150730.jar. Eles deveriam ser o mesmo frasco com um nome diferente?
Deve ser possível ativar o CORS no geoserver / etc / webdefault.xml ou no geoserver / webapps / geoserver / WEB-INF / web.xml.
Entendo que o webdefault.xml seja aplicado primeiro e o web.xml posteriormente.
Eu tentei seguir o filtro em ambos xml. Não cheguei a adicionar um mapeamento de filtro. Adicionar o filtro sozinho fará com que o serviço Geoserver / Jetty não seja iniciado corretamente.
<filter>
<filter-name>cross-origin</filter-name>
<filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
</filter>
Respostas:
Edite o
webapps/geoserver/WEB-INF/web.xml
arquivo. Existem duas referências ao CORS neste arquivo:e
Você deve remover o comentário dos dois blocos (que é remover
<!--
e-->
dos blocosfilter
efilter-mapping
.Então, quando você reiniciar o Jetty, poderá testar se tudo está funcionando usando um comando como:
que, se tudo estiver bem, dará um resultado como:
Atualização 24 de outubro de 2019
Não é mais necessário adicionar o seguinte jar ao GeoServer (pelo menos nas versões 2.13.xe posteriores) e isso causará um erro . Estou deixando esta nota aqui para pessoas que lutam com versões mais antigas.
webapps/geoserver/WEB-INF/lib
dentro do diretório geoserver-2.15.0 (ou onde quer que você descompacte o zip Arquivo).fonte
find $GEOSERVER_HOME -name "jetty*" | grep -E [[:digit:]]
.lib
pasta.Funcionará se você adicionar o filtro em "geoserver / webapp / geoserver / WEB-INF / web.xml" e se adicionar o jar "jetty-servlets.9.2.13.v20150730.jar" dentro de "geoserver / webapp / geoserver / WEB-INF / lib "
fonte
com o Jetty9, UbuntuServer 16.04, eu também tive que modificar o /etc/jetty9/start.ini, para não obter o seguinte erro:
a solução está aqui : você deve ativar o módulo servlets em seu $ {jetty.base} /start.ini
consequentemente, substituí:
por :
fonte
A resposta aceita por Ian Turton é absolutamente melhor aqui. Como estou usando a edição manual do Docker, esse não é o caso. Também não sou um guru do SED, mas, graças à estrutura do web.xml (as strings de destino são únicas no escopo do documento), criei um pequeno trecho:
Ou no Dockerfile:
fonte
Para quem está se perguntando qual versão do jetty você possui para o seu aplicativo geoserver específico.
Para o OSX, simplesmente iniciei o geoserver e procurei no log que deveria mostrar algo como:
Tenho certeza de que é semelhante nos logs do tomcat ao executar em um servidor linux, se necessário.
Além disso, ele deve estar visível nos cabeçalhos de resposta, ou seja:
Ou seja, como a resposta aceita menciona tentar usar o comando curl, ele também apresentará a versão do servidor:
fonte