This chapter describes troubleshooting strategies for Oracle Communications Calendar Server.
If you experience trouble configuring Calendar Server while running the init-config initial configurator script and you receive an error from the application server, ensure that you are running the recommended Java version based on the JDK support available for the container and that your environment is configured appropriately.
Note:
If you use GlassFish Server 3.x, use the JDK version 1.7 and if you use WebLogic Server 12.x, use the JDK version 1.8. For more information, see the installation guide of the corresponding application server.If you upgrade your Java SE to Java SE Development Kit 7, Update 7 (JDK 7u7) or later, you must also upgrade GlassFish Server to the recommended patch level. If you use WebLogic Server, upgrade Java to the recommended JDK8 update version as suggested by the WebLogic Server version. Otherwise, you may encounter problems running the davadmin command.
Begin troubleshooting by ensuring that the application server web container is running and that Calendar Server is deployed. You can use either the Application Server's Administration Console or the command-line utilities.
Topics in this section:
GlassFish Server:
Generic:
If you have more than one GlassFish Server instance installed, use the asadmin -p to specify the instance's administrative port number.
To check Calendar Server status by using GlassFish Server Administration Console:
Start the console.
Navigate to Web Applications under the Applications tab.
Ensure that davserver is deployed and enabled.
Run the following commands:
asadmin list-components -p admin-port --type=web davserver web-module Command list-components executed successfully. asadmin show-component-status -p admin-port davserver Status of davserver is enabled. Command show-component-status executed successfully.
To check the Calendar Server status by using the WebLogic Server Administration console:
Start the WebLogic Server Administration Console.
In the Domain Structure section, click the domain name. For example, domain1.
Navigate to Environment, Servers, and then to the Configuration tab.
Note:
Ensure that the Administration Server and Managed Server in which Calendar Server is deployed are up and running.Navigate to Deployments.
Ensure that davserver is deployed under the Configuration tab.
To troubleshoot the davserver process:
If davserver is not enabled, check the Application Server log in which Calendar Server is deployed.
On GlassFish Server:
Check server.log in the GlassFish_home/domains/domain1/logs directory.
On WebLogic Server:
Check managed_server_name.log in Weblogic_Domain/servers/managed_server_name/logs directory.
If davserver is deployed and enabled but clients have trouble connecting, check the davserver log, calendar.*, in the /var/opt/sun/comms/davserver/logs directory or an equivalent directory. To increase the log level, use the davadmin command as shown in the following example:
davadmin config modify -o log.dav.errors.loglevel -v FINE
See "Calendar Server Command-Line Utilities" for more information on the davadmin command.
For GlassFish Server:
If a davadmin command fails to run, use the -e option to get more details about the failure. For example:
davadmin version Enter Admin password:********* DAV server connection failed. Is the server running? davadmin version -e Enter Admin password:********* JMXconnection exception for url service:jmx:rmi:///jndi/rmi://commsuite.example.com:46633/jmxrmi - Exception creating connection to: 1.1.1.1; nested exception is: java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
This example shows SSL errors. In this case, you would make sure that the truststore file pointed to by the command through the -s option, or the commandfile option, or the default one, if none were specified explicitly, exists and is valid. The default truststore file, .asadmintruststore, is located in the config directory.
To verify:
As root, run an asadmin command on the GlassFish Server host on which Calendar Server is deployed. An .asadmintrustore file is created under the root (/) directory.
Ensure that this file is the same as the one in the Calendar Server config directory.
Also, see "Troubleshooting Application Server and Java".
For WebLogic Server:
If you use WebLogic Server and when davadmin command is successful, the following output is displayed:
/opt/sun/comms/davserver/sbin/davadmin version
Enter Admin password: *********
Handshake succeeded: TLSv1.2
Oracle Communications Calendar Server version: 8.0.0.4.0 (built yyyy-mm-dd-Time)
The following example shows the output when the davdmin command fails:
/opt/sun/comms/davserver/sbin/davadmin version Enter Admin password: ********* Handshake failed: TLSv1.2, error = sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target Handshake failed: TLSv1.1, error = sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target Handshake failed: TLSv1, error = Received fatal alert: handshake_failure Handshake failed: TLSv1.2, error = sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target Handshake failed: TLSv1.1, error = sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target Handshake failed: TLSv1, error = Received fatal alert: handshake_failure Server unavailable at url: service:jmx:t3s://commsuite.example.com:46633/jndi/weblogic.management.mbeanservers.runtime
In the example, 46633 is the secure port of the managed server in which Calendar Server is deployed.
This example shows SSL errors. In this case, check the following to troubleshoot the issue:
WebLogic Server is configured in Secure mode using the supported keystores
WebLogic Administration Console is accessible as https://hostname:secure_port/console
The extractSSLArgs.sh script runs successfully in a secure mode before doing initial configuration.
sh ./extractSSLArgs.sh -u weblogic_admin_user -p weblogic_admin_user_password -l t3s://weblogic_server_host:SSL_port
If there is a problem in running the above script successfully, try to use WLST command to connect to the server.
wls:/offline> connect(weblogic_admin_user,weblogic_admin_user_password,t3s://weblogic_server_host:SSL_port");
WebLogic_Domain/config contains a valid .wls_sslargs file and the contents correspond to the same keystore options that is configured at the WebLogic Server Side Secure Configuration.
davadmin.properties file under CalendarServer_home/config folder contains proper details.
For example:
port=managed_server_port
secure=location of truststore used in configuring WebLogic Server in secure mode
For more information, see the discussion about running extractSSLArgs.sh to validate and store WebLogic Server SSL details in the Calendar Server Installation and Configuration Guide.
If you find a MySQL Server back-end error, ensure MySQL Server is running.
If you use GlassFish Server:
Start the GlassFish Server Administration Console.
Select JDBC Resources from Resources, then select Connection Pools.
Choose the caldavPool and perform a ping.
If the ping fails, check the Pool properties to make sure they are all correct.
You can also perform a command-line ping as follows:
asadmin list-jdbc-connection-pools -p admin-port __CallFlowPool __TimerPool DerbyPool caldavPool Command list-jdbc-connection-pools executed successfully. asadmin ping-connection-pool -p admin-port caldavPool Command ping-connection-pool executed successfully.
Even if you ping the pool, sometimes Calendar Server is not able to load the back end. In this case, you see errors similar to the following:
SEVERE [2009-09-03T22:00:53.310-0700] <...JdbcBackend.getDataSource> Cannot lookup DataSource: javax.naming.NameNotFoundException: defaultbackend1 not found SEVERE [2009-09-03T22:00:53.313-0700] <...DavServer.loadBackend> failed to instantiate or create backend com.sun.comms.davserver.backends.BackendException: Cannot get DataSource: javax.naming.NameNotFoundException: defaultbackend1 not found(OPERATION_NOT_SUPPORTED)
To see the pool and resource data clearly, view the GlassFish Server configuration file, for example:
GlassFish_home/domains/domain1/config/domain.xml
If cause of error is not clear, delete and recreate the Connection Pool and JDBC resource by using the asadmin command, for example:
asadmin delete-jdbc-connection-pool -p admin-port caldavPool asadmin create-jdbc-connection-pool -p admin-port --user admin --datasourceclassname com.mysql.jdbc.jdbc2.optional.MysqlDataSource --restype javax.sql.DataSource --property "DatabaseName=caldav:serverName=mysqlhost:user=caldav:password=mysqlpass:portNumber=3306:networkProtocol=jdbc" caldavPool asadmin create-jdbc-resource -p admin-port --user admin --connectionpoolid caldavPool jdbc/defaultbackend
If you recreate the JDBC resource, ensure to use the same user name and password that you initially used to create the resource. Restart GlassFish Server after recreating the connectionpool and resource.
If you use WebLogic Server:
Start the WebLogic Server Administration Console.
In the left pane of the Console, under Domain Structure, select the domain name.
Click Services and Data Sources.
JDBC DataSources - defaultbackend and ischedulebackend are displayed in the Configuration tab.
Select the defaultbackend JDBC Data Source name from the list.
Select Configuration and General tab.
The settings for defaultbackend are displayed.
Navigate to the Connection Pool tab and ensure that the properties are correct.
Navigate to Monitoring, and then click the Testing tab.
Select the listed managed server name and click the Test Data Source button.
Success or Error message displays in the Administration Console.
Note:
If the connection fails, verify the Pool properties from the Connection Pool tab to ensure all properties are correct.Occasionally, Calendar Server may not load the backend even though the connection to pool succeeds. To see the pool and resource data clearly, view the WebLogic Server configuration file. For example, Weblogic_Domain/config/config.xml
Delete and recreate the Connection Pool and JDBC resource from WebLogic Server Administration Console if the cause of the error is unclear.
Click Lock & Edit before making changes to the configuration.
Click Activate Changes after making the changes and saving the configuration.
Note:
If you recreate the JDBC resource, ensure to use the same user name and password that you initially used to create the resource.If you use WebLogic Server as a container, for creating the JDBC resource, see the discussion about installing and configuring multiple Calendar Server back-end hosts for WebLogic Server manually in the Calendar Server Installation and Configuration Guide.
Restart WebLogic Server after recreating the connection pool and resource.
Verify the MySQL logs for any errors.
You might see the following error when importing an ics file that was created in Convergence.
davadmin calresource import -u admin -a caluser6@example.com -m convergence_caluser6_2.2.ics
Unable to import the resource into 'calendar'. DUE: 20090905T000000Z is before or equal to DTSTART: 20090905T000000Z
This is likely a Convergence problem, because it creates the todo by setting DTSTART and DUE to the same time. This is due to the restrictions described in RFC5545. The description section states that DUE must be later than DTSTART.
The workaround is to manually fix the iCal data to have DTSTART before DUE.
Calendar Server fetches and caches some domain information that is stored in LDAP, such as domain status. The system does not periodically refresh domain information, unlike user and group information.
If you need to refresh domain information, you can use one of the following methods:
Restart the application server.
Using the davadmin command, make a change to any of the LDAP-related configuration options (base.ldapinfo.*), which causes the server to refresh all cached LDAP data.
If you are unable to do a POST command to /davserver/dav/ischedule/, check the following:
Verify that the davcore.scheduling.ischedulebackendid=ischedulebackendid parameter has been set in the davserver.properties file.
Verify that you can connect to the ischedulepool from the application server.
If you use GlassFish Server, you can use the ping command from the GlassFish Administration Console and if you use WebLogic Server, you can use the Test Data Source option from the WebLogic Server Administration Console.
If you get the error "Access denied for user 'mysql'@'localhost' to database 'ischedule'," run the following MySQL Server command
GRANT ALL ON ischedule.* TO 'mysql'@'localhost'
Verify that you can now connect to ischedulepool from the application server.
Restart the application server.
To troubleshoot issues with a particular calendar user or client, it is useful to log all protocol interactions. You can force all telemetry logs by setting the service.dav.telemetry.forcetelemetry parameter to true. Do not use this setting unless required as it generates lots of data.
To enable telemetry logging at a reduced level, set the service.dav.telemetry.filter parameter. This parameter takes a space separated list of request URI prefixes that should be logged. For example:
/wcap/ logs all WCAP access.
/dav/principals/caluser1/ /dav/home/caluser1/ logs all Calendar Server access to caluser1's account (both principals and home collections, and all the resources underneath).
This section presents common errors that you might see in the Calendar Server log files. For more information about using log files, see "Managing Logging".
Topics in this section:
FINE [2009-08-24T19:28:57.020-0700] <...DavServlet.service> Got a non standard condition: DTEND: 20090829T000000 is before or equal to DTSTART: 20090829T000000
INFO [2009-08-24T19:28:57.021-0700] <...DavServerServlet.service> [RES] [403] Command execution time: 0.041 secs
FINE [2009-08-24T19:30:50.044-0700] <...DavServlet.service> Got a non standard condition: uid q3EfPB0C4EHHj918X2GVU1 already in use in /dav/home/modendahl/calendar/765345.ics
INFO [2009-08-24T19:30:50.046-0700] <...DavServerServlet.service> [RES] [403] Command execution time: 0.063 secs
FINE [2009-08-24T19:32:07.803-0700] <...DavServlet.service> Got a non standard condition: unsupported content-type: application/octet-stream
INFO [2009-08-24T19:32:07.805-0700] <...DavServerServlet.service> [RES] [403] Command execution time: 0.019 secs
FINE [2009-08-24T19:32:58.098-0700] <...DavServlet.service> Got a non standard condition: getNode returned null for uri /dav/home/modendahl/calendar/teeeest.ics
INFO [2009-08-24T19:32:58.099-0700] <...DavServerServlet.service> [RES] [404] Command execution time: 0.012 secs
FINE [2009-08-24T19:33:39.239-0700] <...DavServlet.service> Got a non standard condition: Invalid Resource Type in POST:CALENDAR_RESOURCE
INFO [2009-08-24T19:33:39.241-0700] <...DavServerServlet.service> [RES] [403] Command execution time: 0.02 secs
INFO [2009-08-24T19:35:10.416-0700] <...DavServerServlet.service> [REQ] CONNECT /dav/home/modendahl/calendar/ 192.18.127.57 ics-s6.sfbay.example.com:8080
INFO [2009-08-24T19:35:10.418-0700] <...DavServerServlet.service> [RES] [501] Command execution time: 0.0020 secs
You can use a browser servlet to view an account's properties stored in collections and resources. You might find this helpful when troubleshooting calendar problems. For more information, see "Known Issues".
To access this browser servlet, take any valid dav URI and replace the dav prefix following davserver with browse. For example, in a browser, change the following:
http://example.com:3080/davserver/dav/home/smithj/calendar/
to:
http://example.com:3080/davserver/browse/home/smithj/calendar/
The servlet returns a a view of the account's properties stored in collections and resources. You can navigate among properties and delete them as well. The servlet also has some import function if you want to use a server-side import instead of a client-side import.
The delete and file import features are enabled only when the logging level is set at FINE or lower. To specify the logging level, use the log.dav.errors.loglevel configuration parameter.
Tip:
You can log in with Calendar Server administrator (the default is calmaster) credentials to view multiple accounts with one login. Also, when viewing multiple accounts, clear your browser cache before viewing the next account.This section describes client issues.
Topics in this section:
Lightning does not support more than one calendar account. It allows only one account per server at a time.
Lightning 0.9 does not support multiple reminders for single events. Lightning 1.0 beta 1 does support multiple reminders.
Lightning is not able to create an account if the user name contains special characters.
If Lightning 1.0 beta1 is installed with Thunderbird 3, and you try to go back to Thunderbird 2 and Lightning 0.9, when starting Thunderbird the following error occurs:
The Calendar data in your profile was updated by a newer version of Lightning, and continuing will probably cause the information to be lost or corrupted. Lightning will now be disabled and Thunderbird restarted.
To fix this error:
Export all your calendar data in iCalendar format.
Remove the calendar database storage.sdb file from your profile.
Restart the Thunderbird and import the iCalendar file.
Thunderbird on Solaris needs to be reloaded twice to get the newly created Todo.
Inviting users on Thunderbird for Solaris and checking their availability does not show free/busy check properly. Instead, the invitee is always shown as free even when the invitee is busy.
Calendar import is failing with Thunderbird on Windows and Solaris. The failed import displays the "Modification_failed" error message. Logging back in to the profile loads the imported data to the calendar.
Apple iCal adds its own default reminder to an event if you select the "Add a default alarm to all new events and invitations" option. Thus, if calendar1 exports the event (with no reminder) and calendar2 imports it, the imported reminder has a default alarm set.
Apple iCal is not able to create an account if the user name contains special characters.
If the event is created with "Repeat on Weekdays only" option from Lightning or Convergence, the Apple iCal will convert it to "Every day" and display it.
The following information was found with iPod touch 3.1.3 firmware.
Supported Features:
Event is supported.
Reminders are supported with iPod touch, up to a maximum of two reminders for a single event.
Recurrence is supported.
iPod touch client enables you to a create duplicate calendar.
Unsupported Features:
Todos.
[AppleiPhone]STATUS not being taken into account when invitation event canceled by organizer.
Invitations can be viewed by not accepted, declined or rejected.
When the organizer of the event cancels the event, invitees do not have any information that event is canceled.
Attachments.
Free/busy.
Availability check.
Import-Export functionality.
Share/Subscribe of calendar.
Apple iPhone STATUS not being taken into account when invitation event canceled by organizer
When an iPhone 3 user gets an invitation from a Lightning user, there is no option to accept, reject, or decline the event. Additionally, when the inviting user deletes the event, the iPhone user does not receive an event notification, nor is the event deleted from the user's calendar. The event is in read-only mode. This issue is fixed starting with the iPhone 4 release.
Connector for Microsoft Outlook
See "Connector for Microsoft Outlook and Event Time Modifications".
For correct setup and data synchronization to occur on devices running iOS 5 and Mac OS 10.7, make sure that you have installed at least Calendar Server 7 Update 2 Patch 5.
Currently, the Mac OS 10.9 iCal Client enables you to create or move events, but not delete events.
You can configure Instant Messaging Server for Java Message Service (JMS) to support Calendar Server Agent alerts. If you find that you are not receiving event reminders (alarms) in an XMPP-enabled instant messaging client, verify that the password configuration has been properly configured.