O GeoServer suporta uma variedade de especificações de Web Services, como Web Feature Service, Web Map Service e Web Coverage Service. Este artigo fará um introdução ao modelo de serviço do GeoServer, a quem tenha interesse de criar novos tipos de Web Services para trabalhar com o GeoServer.
O modelo de serviço do GeoServer é baseado na noção de POJO’s. Simplesmente, um serviço é composto por uma coleção de POJO’s que implementam a lógica do serviço. Você pode estar se perguntando, por que o uso de POJO’s?
Porque com POJO é muito simples, pois quando você desenvolve um serviço não precisa se preocuparar em tornar-lo “familiar” ao set da nova API. Por definição um pojo não executa uma relação particular, não é amarrados a nenhum sistema ou plugin. Isto faz o trabalho de adaptar o serviço a uma plataforma muito mais fácil.
Um serviço deve ser concebido com a lógica e a semântica do serviço, isso é tudo. Veja exemplo de uma classe de um Web Service:
[source language=”:Java”]
class WebMapService {
Document getCapabilities();
Image getMap();
….
}
[/source]
Cada operação do mapa é simplesmente um método da classe.
O serviço é definido pela requisição do cliente. Uma requisição especifica a seguinte informação: indetificação do serviço, operação e os parâmetro para a operação.
Uma requisição pode ser feita de diversos métodos: HTTP GET/POST, SOAP, RPC, etc… Entretanto nenhuma desta importa ao serviço. O serviço preocupa-se sobre executar a lógica de suas operações, e nada mais.
Olhando o exemplo a baixo, vamos considerar a operação GetMap.
[source language=”:Java”]
class WebMapService {
void setLayers( List layers );
void setBbox( BoundingBox bbox );
Image getMap();
}
[/source]
Cada parâmetro da operação está diretamente ligado a uma propriedade da classe, e a um método setter. Considere o seguinte o pedido para a operação de GetMap:
[source language=”:XML”]
http://geo.openplans.org/geoserver/wms?request=GetMap&layers=states&bbox=-180,-90,180,90
[/source]
Este pedido é enviado ao WebMapService como descrito abaixo.
Fonte: GeoServer