Skip to content

Workspace

hwbllmnn edited this page Apr 10, 2013 · 20 revisions

This page is the central entry point for documentation about the deegree workspace concept and implementation.

Shortcomings of old workspace concept

The old workspace concept had a couple of shortcomings, which I'll describe here to give an understanding why a new implementation has been started.

Dependencies

The workspace has a concept of dependencies, but dependencies are only possible on a resource type level. At first glance, this is sufficient in most cases, but not all.

The first resource we came across where this was not sufficient any more was the caching tile store, which naturally depends on another tile store.

Thinking about it, a tile store implementation that automatically tiles a layer resource on the fly/whatever would be a natural thing. But since there's also a tile layer implementation, the layer subsystem already depends on the tile subsystem, introducing a dependency the other way round would introduce a cycle.

Restartability

Restarting a single resource is possible, but often has unknown/bad side effects on other resources. So if you restart your feature store (possibly changing the configuration) affects eg. the WFS, some feature layer, the WMS...

The only workable solution has been to just restart the whole workspace. While that's sufficient in many cases, it can be slow and time consuming, especially if many resources are configured.

If the exact dependency chains between resources were known, only affected resources could be restarted.

Static is bad

Some resource managers do things in a static context. While this is often sufficient in a webapp (where only a single workspace is active anyway), it's still bad practice and should be avoided. Looking at the infamous ConnectionManager, a rewrite is badly needed.

XML

The workspace is tightly bound to the XML formats which are used to configure resources. While this is not necessarily a bad thing, other scenarios still seem useful, where configurations are created by some other means (such as reading the config from a database). This is just not possible to do with the current workspace concepts.

Basic workspace concepts

How to work with the workspace

How to implement a new resource type

How to implement a new resource

Clone this wiki locally