These notes assume a multi-server configuration where it matters. There is a 2 way interaction between the calendar server and the sync engine.
The calendar server will call the sync engine to create new subscriptions and will call it to get information while adding or displaying collections.
The steps to deploy are:
- Create a database for the sync engine
- Update the standalone.xml to provide a datasource (and drivers)
- Update the configuration.
- Start it.
- Create the table(s)
Update the configuration
There may be a number of changes to make - both in the calendar server which will interact with the sync engine and for the sync engine itself.
First update the calendar engine end:
- connectorId - identifies the connector "localBedework" should be OK
- managerUri - "http://localhost:8080/synch/manager" for embedded or the equivalent for a multi server setup
wsdlUri - "http://localhost:8080/wsdls/synch/wssvc.wsdl" is probably fine.
Then update the sync engine. This requires configuring both the engine itself in synch/conf/synch-config.xml but also at least the bedework connector in synch/conf/connectors/localBedework.xml
In synch-config.xml ensure the hibernate dialect is set correctly. Other than that the config is probably fine.
In localBedework.xml the name should match the name in the Connector Id above. The bwWSDLURI element refers to either the soap wsdl loaded from the remote server or it can be loaded locally. In either case that file must provide the location of the calendar server in the soap:address element right near the end of wssvc.wsdl. That file is deployed as part of the bwxml module. The files is in wildfly-10.1.0.Final/standalone/deployments/bw-xml-3.11.0.ear/bwwsdls-3.11.0.war/synch/wssvc.wsdl. The server location can be set as part of the build process or edited in later (but that will need to be done on each rebuild/redeploy). The build uses the value in the build time property org.bedework.bwsynch.service which is set in .default/cal.properties.
This process needs to be changed to use the deploy.properties invoked after the build.
Create the tables
The previously created database will have no tables. To make it usable you need to install the schema. Either use the hawtio jmx console or the cli.
Using hawtio to install schema
- Navigate to the sync configuration.
- Switch to operations
- Invoke the "schema" operation
Using the cli to install the schema
- Build the cli if not already built - cd quickstart;./bw -bwcli
- cd into the built tool - cd quickstart/bwcli/dist/temp/shellscr/bwcli
- invoke it - ./bwcli.sh
- enter the admin id and password
- Enter "sync schema"
In either case tables should appear in the database.
Sync Engine operations
The sync engine needs to operate in a firewalled environment. It uses connectors handle subscriptions and has the connector types:
- localBedework - interacts with bedework via the SOAP service
- file - handles iCalendar only
- manager - for internal operations.
The localBedework connector will poll (currently iCalendar only) subscriptions for changes and interactswith bedework as follows:
- At startup sends a startServiceRequest to bedework
- Bedework sends back a response holding a token
- The connector periodically pings bedework to keep the connection alive. Each time it gets a new (random) token.
- The connector will check each of the subscriptions for changes.
- When changes occur interactions with bedework (updating collections) use the supplied token
When a subscription is created an opaque token is handed over to the connector. This is returned when changes take place. This token actually contains some properties. At the moment these are
- public-admin - true/false
adminCreateEprops - true/false - indicates whether the admin update can create event properties - e.g. location/category/contact. If false they get preserved as x-properties. Only set true for a very trusted source.