I am working on a web service program that makes calls back and forth in the form of XML. My issue is not with that however. When I run this locally (in Eclipse) on my machine, it seems to work. However, when my coworker runs it/if I attempt to run it on the server, he gets this exception before the web service is even called:
Exception #6 in ClientMain.java java.lang.IllegalArgumentException: 2012-07-09T08:19:44-0400
Does anyone have any idea why it would take the argument on one machine but not the other? The build should not be the issue as I copied my entire eclipse workspace on a thumbdrive (so all associated jars and the build path should have carried over). As far as the server run, I exported the entire program as a runnable jar (running Eclipse Indigo) and get a similar issue.
I'd appreciate any insight!
Stacktrace/Output:
java.lang.IllegalArgumentException: 2012-07-09T09:19:42-0400
at com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl$Parser.skip(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl$Parser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl.<init>(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl.newXMLGregorianCalendar(Unknown Source)
at com.travelport.worldspanimageserver.client.ClientMain.requestRun(ClientMain.java:231)******************************************************
Running by Yesterday's Date ...
2012-07-09T09:19:42-0400
Current date being used is 2012-07-09T09:19:42-0400
Exception #6 in ClientMain.java java.lang.IllegalArgumentException: 2012-07-09T09:19:42-0400
at com.travelport.worldspanimageserver.client.ClientMain.runTypeCheck(ClientMain.java:161)
at com.travelport.worldspanimageserver.client.ClientMain.main(ClientMain.java:81)
Exception #13 in ClientMain.java java.lang.NullPointerException
Method causing exception:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Properties;
import java.util.TimeZone;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.swing.text.Document;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import org.joda.time.format.DateTimeFormatter;
import org.joda.time.format.ISODateTimeFormat;
public static void requestRun(String strRunType) throws DatatypeConfigurationException{
//-TODO: determine how date is passed in/retrieved from database
GregorianCalendar c = new GregorianCalendar();
XMLGregorianCalendar dateTime = null;
if (strRunType == "fullLoad") {dateTime = null;}
if (strRunType.substring(0,2).equals("OD"))
{
System.out.println("Current date being used is " + DatatypeFactory.newInstance().newXMLGregorianCalendar(strRunType.substring(2,strRunType.length())));
dateTime = DatatypeFactory.newInstance().newXMLGregorianCalendar(strRunType.substring(2,strRunType.length()));
}
if (strRunType.substring(0,2).equals("DT"))
{
System.out.println("Current date being used is " + strRunType.substring(2,strRunType.length()));
dateTime = DatatypeFactory.newInstance().newXMLGregorianCalendar(strRunType.substring(2,strRunType.length()));
}
String address = "http://vhligssas001:31860/services/ImageViewerService"; /**getServiceURL(sServer);**/
try
{
ArrayList<PropertyType> propertyIdList = null;
ArrayList tempList = null;
if (strRunType.equals("properties"))
{
propertyIdList = getPropertiesFromFile(); //to fix later
}
else
{
propertyIdList = initialCall(dateTime, propertyIdList, address);
}
secondCall(propertyIdList, address);
}
catch(Exception e)
{
System.out.println("Exception #5 in ClientMain.java " + e);
try
{
postMail("Exception #5 in ClientMain.java " + e);
}
catch (Exception e1)
{
e1.printStackTrace();
}
System.exit(16);
}
}
catch(Exception e)
{
System.out.println("Exception #6 in ClientMain.java " + e);
try
{
postMail("Exception #6 in ClientMain.java " + e);
e.printStackTrace(); //added
}
catch (Exception e1)
{
e1.printStackTrace();
}
System.exit(16);
}
}
Main Class:
public static void main(String args[]) throws Exception
{
String sRunType = new String("");
try
{
File fPropertiesToLoad = new File("runType.txt");
BufferedReader in = null;
String strRunType = new String("");
if (!fPropertiesToLoad.exists())
{
System.out.println("******************************************************");
System.out.println("Exception #1 - Run Type file does not exist");
System.out.println("******************************************************");
postMail("Exception #1 - Run Type file does not exist");
System.exit(16);
}
else
{
in = new BufferedReader(new FileReader("runType.txt"));
if ((strRunType = in.readLine()) != null)
{
sRunType = strRunType.trim();
}
in.close();
runTypeCheck(sRunType);
}
}
catch (Exception e)
{
System.out.println("Exception #2 in ClientMain.java " + e);
postMail("Exception #2 in ClientMain.java " + e);
System.exit(16);
}
}
runTypeCheck:
public static void runTypeCheck(String sRunType)
{
try
{
//Hard-coded in "yesterday" as the date
sRunType = "DT";
System.out.println("******************************************************");
DateTimeFormatter parser2 = ISODateTimeFormat.dateTimeNoMillis();
if (sRunType.equals("DT"))
{
System.out.println("Running by Yesterday's Date ...");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
sRunType = dateFormat.format(cal.getTime());
System.out.println(sRunType);
sRunType = sRunType.replaceAll("-0500", "-05:00");
sRunType = "DT" + sRunType;
requestRun(sRunType);
}
System.out.println("******************************************************");
}
catch(Exception e)
{
System.out.println("Exception #4 in ClientMain.java " + e);
try
{
postMail("Exception #4 in ClientMain.java " + e);
}
catch (Exception e1)
{
e1.printStackTrace();
}
System.exit(16);
}
}
only output:
******************************************************
Running by Yesterday's Date ...
2012-07-09T08:19:44-0400
Current date being used is 2012-07-09T08:19:44-0400
Exception #6 in ClientMain.java java.lang.IllegalArgumentException: 2012-07-09T08:19:44-0400
Since java. util. Date is the most common way to deal with Java date and time, we always need to convert the instance of XMLGregorianCalendar to the Java Date instance. Using the Java API, we can easily convert XMLGregorianCalendar to XMLGregorianCalendar Date and Date in Java.
DatatypeFactory ", exists, a class with the name of the property's value is instantiated. Any Exception thrown during the instantiation process is wrapped as a DatatypeConfigurationException . If the file ${JAVA_HOME}/lib/jaxp. properties exists, it is loaded in a Properties Object .
The problem is that your 'date' that you get from strRunType.substring(2,strRunType.length())
isn't a valid lexicalRepresentation
of the date.
You'll need to get your input value correctly formatted in order to parse as an XMLGregorianCalendar
object.
The error being that you are missing a :
in the -04:00
in your date.
Which you must have been aware of because of sRunType = sRunType.replaceAll("-0500", "-05:00");
code... except you were using a 5 instead of a 4?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With