PEBKAC
Yesterday punchagan introduced me with PEBKAC - Problem Exist Between Keyboard And Chair, it was a Things I learned(TIL). I had experienced this before many times, only I didn't know that there was such a term.
Starting in April, at TaxSpanner I was given task to integrate ITD
Webservices APIs for income tax return filing and other features with
our existing stack. The procedure included quite a few alien things to
me. Sample codes provided by ITD were in Java, they were using
SPRING
framework. Our requests had to be routed via specific proxy
approved from ITD and furthermore we physically needed an USB DSC key
registered with ITD to encrypt the communication.
As I was trying to get first successful run of API working from my
system, I was stuck with accessing DSC key from my java code. It
needed drivers available here and java
security(/etc/java-7-openjdk/security/java.security
)config file to
be edited properly to use correct drivers. After doing these things
first thing I tried was to list certificates on the USB token using
keytools
. And on first run, it worked fine. I was ecstatic, one fewer
unknown from the pile of unknowns, right. Wrong, as soon as I tried to
run java programs using DSC it threw up lines and lines of error which
went something like:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://cxf.apache.org/core]
Offending resource: class path resource [ClientConfig.xml]
at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:80)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:318)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1435)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1428)
...
at itd_webs.core.main(Unknown Source)
2016-05-11 12:03:48,114 [main] WARN org.apache.cxf.bus.spring.SpringBusFactory - Failed to create application context.
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://cxf.apache.org/core]
Offending resource: class path resource [ClientConfig.xml]
Getting configs in place so that SPRING
framework can load proper
credentials from DSC was one another task where inputs from Nandeep
proved very crucial. Thankfully we had one more system where the Java
code and setup with the DSC worked. So it was clear that the
particular error related to DSC recognition was just on my
system. After lot of head scratching, comparing two systems to
identify if something is amiss, trying strace
, nothing helped. After
scrolling through lot of java related stackoverflow conversations I
was playing around with keytools
and jdb
. As I tried JDB
, I
noticed DSC blinking and then I thought that the maybe default java
was using different configs, I checked my /usr/lib/jvm/
and indeed
there were 4 different version of java. I checked java -version
and
it pointed to java version "1.8.065" so instead I tried to compile
and run command using /usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java
and USB blinked happily ever after. While we kept developing and
making system stable on computer where things were working, to get it
working on my system it almost took two weeks to narrow down to exact
issue. And now I have a name for all the time spent, PEBKAC. Thank you
punchagan.