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 work of 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