Download Data Synchronization with SyncML and sync4j

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Data Synchronization with
SyncML* and sync4j
Sean C. Sullivan
<sean> at <seansullivan> <.com>
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
Agenda
Data synchronization
 SyncML
 sync4j
Q&A

Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
What is data synchronization?
Data synchronization “is the process of
making two sets of data look
identical” (syncml.org whitepaper)
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
Data Synchronization
Datastore1
Datastore2
A
A
B
C
B
C
Data modifications
 Conflict resolution

Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
What is a “data
synchronization protocol”?
Communication syntax and semantics
for a data synchronization session
 Protocol includes:

– naming and identification of records
– common protocol commands
– identification and resolution of
synchronization conflicts
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
SyncML defined…
“SyncML is a new industry initiative to develop and
promote a single, common data synchronization
protocol that can be used industry-wide.” (syncml.org)
“SyncML is a specification for a common data
synchronization framework and XML-based format
[…] for synchronizing data on networked devices.”
(syncml.org)
“SyncML is a […] protocol for conveying data
synchronization operations.” (syncml.org)
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
SyncML sponsors
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
SyncML: clients & servers
server modifications
client modifications
Copyright © 2001 Sean C. Sullivan
SyncML
server
* Third party trademarks are property of their respective owners
SyncML data identification
Server
Client
LUID Data
GUID Data
GUID LUID
23
A
189
A
189
382
B
3982
B
3982 382
61
C
89
C
89
Copyright © 2001 Sean C. Sullivan
23
61
* Third party trademarks are property of their respective owners
SyncML
Synchronization Types
Two-way sync
 Slow sync
 One-way sync from client only
 Refresh sync from client only

Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
SyncML
Synchronization Types (cont.)
One-way sync from server only
 Refresh sync from server only
 Server alerted sync

Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
SyncML features
Synchronize any type of data
 Multiple protocol bindings

– HTTP, WSP, OBEX
Security
 Interoperability

Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
SyncML terminology
Message
 Package
 Command
 Status code

Copyright © 2001 Sean C. Sullivan
Datastore
 Device Info
 Meta Info
 Capabilities
exchange

* Third party trademarks are property of their respective owners
SyncML and XML

Abbreviated naming convention
– Ex: ”protocol version” is <VerProto>
XML prolog is not required
 WBXML

– WAP Binary XML
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
SyncML documents
<SyncML> DTD
 Meta info DTD
 Device info DTD

Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
<SyncML> document


“A SyncML Message
is a well-formed, but
not necessarily
valid, XML
document.” (syncml.org)
Contains data
synchronization
commands
(operations)
Copyright © 2001 Sean C. Sullivan
<?xml version="1.0"?>
<!DOCTYPE … >
<SyncML>
<SyncHdr>
…
</SyncHdr>
<SyncBody>
…
</SyncBody>
</SyncML>
* Third party trademarks are property of their respective owners
<SyncHdr> element
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>1.0</VerProto>
<SessionID>session41</SessionID>
<MsgID>msg80386</MsgID>
…
</SyncHdr>
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
<SyncBody> element
<SyncBody>
<Delete>
<CmdID>cmd80486</CmdID>
…
<Item>…</Item>
</Delete>
</SyncBody>
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
Meta Info document

Contains sync
session parameters
Copyright © 2001 Sean C. Sullivan
<MetInf>
<Format>…</Format>
<Type>…</Type>
…
<MaxMsgSize>586
</MaxMsgSize>
…
</MetInf>
* Third party trademarks are property of their respective owners
Device Info document


Describes
device
capabilities
For both client
and server
Copyright © 2001 Sean C. Sullivan
<DevInf>
…
<SwV>0.99</SwV>
<HwV>3.14</HwV>
…
<DevTyp>pda</DevTyp>
…
</DevInf>
* Third party trademarks are property of their respective owners
SyncML commands








Add
Alert
Atomic
Copy
Delete
Exec
Get
Map
Copyright © 2001 Sean C. Sullivan
Put
 Replace
 Results
 Search
 Sequence
 Status
 Sync

* Third party trademarks are property of their respective owners
sync4j
Java implementation of SyncML
protocol
 sync4j client & sync4j Server
 open source
 designed for J2SE platform
 http://sync4j.sourceforge.net

Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
Open source licensing

Licensing options:
–
–
–
–
–
–

GPL?
LGPL?
BSD?
Apache Public License?
JDOM public license?
Mozilla Public License (MPL)?
sync4j license is virtually identical to JDOM
license
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
sync4j audience
developers who know Java but don’t
know SyncML
 developers who know SyncML but may
not know Java
 commercial application developers &
open source application developers

Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
API design ideas

SAX API
– standard set of interfaces
– multiple implementations
– usage model: callbacks

JDOM API
– concrete classes; single implementation
– root Document object contains Element
objects
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
API design ideas (cont.)

Servlet API
– usage model: developer builds a new
servlet by subclassing HTTPServlet

Auto-generate classes from DTD using
an XML data-binding tool??
– Sun’s JAXB
– Enhydra’s Zeus
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
Design goals

Hide complexity of the SyncML
specification from Java programmers
– XML documents, XML parsing
– multiple transport protocols
A complete SyncML implementation
 Interoperability

– with existing SyncML clients & servers
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
Design goals (cont.)

API should be natural and familiar to
Java programmers
– direct object instantiation
– exceptions
– use Collection API / arrays, where
appropriate
– event notification via event listeners
– familiar naming conventions
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
Design goals (cont.)
API must be familiar to developers who
already know the SyncML DTD’s
 API must enforce any restrictions that
are defined in the SyncML specification
 Target platform: J2SE

Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
Design goals (cont.)

Modular design:
– “core” protocol support
– transport protocol libraries
– extensible client framework
– extensible server framework
– client application
– server application
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
sync4j implementation
Immutable objects
 Exception class for each SyncML
“status code”
 Declaration of constants

– public final static variables

Command object hierarchy
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
sync4j command hierarchy
AbstractCommand
RequestCommand
AddCommand,
DeleteCommand,
ReplaceCommand,
…
Copyright © 2001 Sean C. Sullivan
ResponseCommand
ResultsCommand,
StatusCommand,
* Third party trademarks are property of their respective owners
sync4j toolset
Tool
Jakarta Ant
JDOM
Apache Xerces-J
CVS
log4j
JDK 1.3.1
JUnit
SourceForge
Copyright © 2001 Sean C. Sullivan
URL
jakarta.apache.org
www.jdom.org
xml.apache.org
www.cygwin.com
www.log4j.org
java.sun.com
www.junit.org
www.sourceforge.net
* Third party trademarks are property of their respective owners
sync4j packages
sync4j.core
 sync4j.client
 sync4j.server

Copyright © 2001 Sean C. Sullivan
sync4j.http
 sync4j.wsp
 sync4j.obex
 sync4j.tests

* Third party trademarks are property of their respective owners
sync4j key classes




SyncMLMessage
DeviceInfo
MetaInfo
Command classes:
– AddCommand
– DeleteCommand
– ReplaceCommand
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
sync4j.core.SyncMLMessage

Two ways to construct:
– from a String of XML
– from more basic sync4j objects
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
SyncMLMessage example 1
String strXML = “<SyncML> … </SyncML>”;
SyncMLMessage msg;
try
{
msg = new SyncMLMessage(strXML);
}
catch (InvalidSyncMLException ex)
{
}
catch (XMLSyntaxException ex)
{
}
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
SyncMLMessage example 2
SyncHeader header = new SyncHeader(...);
SyncBody body = new SyncBody(...);
SyncMLMessage msg;
msg = new SyncMLMessage(header, body);
String strXML = msg.toXML();
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
Algorithms

Base64
– encode, decode

WBXML
– encode, decode

MD5
– java.security.MessageDigest
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
sync4j future issues
Compliance testing, interoperability
tests
 move to JDK 1.4?

– Assert facility
– Java Logging API
– New I/O classes: java.nio
– SSL class library
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
Summary
SyncML is both complex and powerful
 sync4j hides the complexity of SyncML
from Java programmers
 The sync4j API is consistent with many
familiar Java programming idioms
 http://sync4j.sourceforge.net/

Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
Data Synchronization with
SyncML* and sync4j
Sean C. Sullivan
<sean> at <seansullivan> <.com>
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
The following slides are miscellaneous
material.
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
SyncML authentication
<Chal>
 <Cred>
 Authentication types:

– basic
– MD5
Copyright © 2001 Sean C. Sullivan
* Third party trademarks are property of their respective owners
Related documents