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.

Requisição WMS

Fonte: GeoServer