First, determine which mobile devices you want to support and their data format. For instance, for calendar data, the Funambol Outlook client supports an XML format, while mobile phones support VCalendar. Next, install the Funambol server and appropriate connectors. This can typically be used out-of-the-box with the above clients. Then, install the appropriate plug-in on your devices (check for these downloads). If your phone is SyncML compliant (check here), all you need to do is configure it. If you've got an unusual device to connect, are developing/extending your own mobile application or want to use your own data storage, download the documentation, join our community and start coding!
No, the DB module is a generic DBMS library that can synchronize any relational data type. For out of the box PIM synchronization, use our off-the-shelf server connectors and client plug-ins, downloadable here. If you want to synchronize address book and calendar from other systems, you will need to create the proper mapping. Unfortunately, for VCARDs/iCAL (i.e. phones), it is not easily possible to map these formats to a relational database. For more information, check the Wiki.
Yes, there is the developer guide as well as a module development tutorial. These can be found via the documentation section of the forge.
The Funambol v3 and v6 Servers are capable of pushing notifications to devices e.g. that’s one way we support push email. There are few phones that support this feature yet, however, the list is growing. This is supported with Funambol-provided clients.
The log files are found in the logs directory that resides in the server directory.
First of all, enable full logging and look for exceptions and errors in the log file.
Use the Admin Tool to change the log level to ALL which is the maximum logging. You do this in the Admin Tool by expanding the 'server/hostname', 'Server settings', 'Logging' and selecting the first logger (Funambol in v6 or Sync4j for old versions). Change the 'Logging Level' to ALL. If you have not made changes to other loggers, their log level will follow the Funambol or Sync4j logger.
Then, perform another synchronization and look for exceptions or errors. If there is still a problem, you can check the Funambol support page, and potentially post the log file to the mailing list. People are willing to look at it, but it is expected that you have first looked for the obvious problems. Everybody will be grateful if you read the manual before posting :-)
Sure, edit config/sync4j/server/logging/Logging.xml and put the log level of the logger called 'Funambol' (or 'Sync4j' for older versions) to ALL. This file is a bean format and the property to be changed is called 'level'. Start the server and if you find errors, look at tools/tomcat/logs/catalina.out.
The server authorizes access based on the username and device id association called the principal. You create a principal with the Admin interface. View the admin guide for details.
In most cases, this is caused by an incorrect server configuration where you have not set the server URI correctly. The default server installation uses the hostname 'localhost' and that is inaccessible outside the system.
2004-08-16 17:24:27,468 ERROR [STDERR] Aug 16, 2004 5:24:27 PM sync4j.server.engine.SyncAdapter checkMessage FINE: serverURI: localhost
2004-08-16 17:24:27,484 ERROR [STDERR] Aug 16, 2004 5:24:27 PM sync4j.server.engine.SyncAdapter checkMessage FINE: targetURI: X.Y.W.Z
2004-08-16 17:24:27,546 ERROR [STDERR] Aug 16, 2004 5:24:27 PM sync4j.server.session.SyncSessionHandler moveTo FINE: moving to state STATE_ERROR
Where X.Y.W.Z is your server IP address. If this is the case, go back and try again.
The server name setting is used to identify the requests addressed to a given server (and, on the contrary, to reject requests addressed to other servers). It is also called "server URI" and usually takes the form of a URL (such as http://server[:port]/something). By default, the server URI is set to localhost, since it is likely that your first try will happen on a local machine. The localhost setting, however, does not work with a real device (i.e. a mobile phone), since it will use an internet server name or address to reach the server. In this case, you MUST change the server-name value in the install.properties file before running bin/install.sh[cmd] again.
It must be set as follows:
server-name=http://server[:port]/funambol/ds
where server can be either the server name (if resolved by a public DNS) or the IP address; port is the port on which the server listens to (8080 by default).
For example, you may see the exception: javax.naming.CommunicationException [Root exception is java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: [...]
In general, for connection problems with the Admin Tool, make sure of the following:
When the exception above appears, it means there is something wrong in the server network configuration. This usually has to do with how hostnames are resolved back to IPs. A common error is a misconfiguration in the /etc/hosts file (or the equivalent in your system) on the server. Make sure that the server hostname is not on the 127.0.0.1 line. For example, this line is wrong:
127.0.0.1 hostname.domain.suffix localhost localhost.localdomain
(hostname.domain.suffixwould be resolved by the Funambol Admin's RMI subsystem to127.0.0.1).
Change it to:
127.0.0.1 localhost localhost.localdomain
X.Y.W.Z hostname.domain.suffix
Where X.Y.W.Z is the real server IP. Note that this may require a change if you are running the server on a DHCP client machine (so that it gets a new IP virtually anytime the box restarts the network services).
This is not a Funambol specific problem, but a general problem of the application server. The problem is that the application server cannot find the JDBC classes in the common places where it searches for them. The error in the log file looks like:
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'
The way to resolve this is by putting the jdbc jarfile in the directory where the application server loads all jar files by default. For Tomcat that would be '/commons/lib'.
HTTP 400 response with the client. What did I do wrong?You probably performed your synchronization request too quickly after the server start-up, before initialization was complete. Get a cup of coffee and start again, life is too short and you should enjoy it.
Yes, set your environment variable LANG to the value en_US.utf-8 and it will work.
You can read the documentation, check the mailing lists, visit the Wiki and look at other documents on the Funambol forge.