Showing posts with label Ant target. Show all posts
Showing posts with label Ant target. Show all posts

Monday, April 22, 2013

tools.jar can not be found in JRE folder

I came across this error other day i was trying to configure ant in my new machine. The reason for this is that the relevant jar file is not in the <JRE location>lib folder but in <JDK location>lib folder.

The most simplest fix for this is to just copy the "tools.jar" file from the <JDK location>lib to  
<JRE location>lib folder.
 
Good luck.
:)

Saturday, March 17, 2012

Ant target to start axis2 server

Here i will describe how to write ant target to start apache axis2 server directly from your "build.xml" file without calling any shell script file. For this purpose we use "org.apache.axis2.transport.SimpleAxis2Server" class and pass it few arguments to tell it about our configuration files and service folder path.

First let us add locations to class path.
(here the ${axis-homerefers to the root of your apache axis2 directory.)



<path id="axis-classpath">
 <pathelement location="${axis-home}"/>
 <pathelement location="${axis-home}/conf"/>
 <pathelement location="${env.JAVA_HOME}/lib/tools.jar"/>
 <fileset dir="${axis-home}/lib">
  <include name="*.jar"/>
 </fileset>
</path>

with adding those paths to the class path let us write ant target to start axis2 server like below.


<target name="start-axis">
 <java classname="org.apache.axis2.transport.SimpleAxis2Server" fork="true">
  <classpath refid="axis-classpath" /> 
  <jvmarg value="-Djava.endorsed.dirs=${axis-home}/lib/endorsed;${env.JAVA_HOME}/jre/lib/endorsed;${env.JAVA_HOME}/lib/endorsed" />
  <arg line="-repo ${axis-home}/repository"/>
  <arg line="-conf ${axis-home}/conf/axis2.xml"/>
 </java>
</target>


Here we pass a jvm argument stating all the endorsed folder paths and two runtime arguments which are the location for service repository and path to axis configuration file.

Friday, March 16, 2012

Ant target for Apache Tomcat

This tutorial will explain how to write an ant target to start and stop tomcat. For this task we use a special class located in "tomcat/bin/bootstrap.jar" namely "org.apache.catalina.startup.Bootstrap". Also this  jar will be depend on another jar which is located at the same location "tomcat/bin/tomcat-juli.jar".

First add these locations to a class path like below.
(here the ${tomcat} refers to the root of your tomcat directory.)


<path id="tomcat-classpath">
 <fileset dir="${tomcat}/lib">
  <include name="*.jar" />
 </fileset>
 <fileset dir="${tomcat}/bin">
  <include name="tomcat-juli.jar" />
  <include name="bootstrap.jar" />
 </fileset>
</path>


Then we write start-tomcat target to start the apache tomcat.


<target name="start-tomcat">
 <java classname="org.apache.catalina.startup.Bootstrap" fork="true">
  <classpath refid="tomcat-classpath" />
  <jvmarg value="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" />
  <jvmarg value="-Djava.util.logging.config.file=${tomcat}/conf/logging.properties" />
  <jvmarg value="-Dcatalina.home=${tomcat}" />
  <jvmarg value="-Dcatalina.base=${tomcat}" />
  <jvmarg value="-Djava.io.tmpdir=${tomcat}/temp" />
  <arg line="start"/>
 </java>
</target>


And then we write the stop-tomcat target to stop the running tomcat instance.


<target name="stop-tomcat">
 <java classname="org.apache.catalina.startup.Bootstrap" fork="true">
  <classpath refid="tomcat-classpath" />
  <jvmarg value="-Dcatalina.home=${tomcat}" />
  <arg line="stop" />
 </java>
</target>


Ok! we are done!!!

Saturday, March 10, 2012

Editing XML using apache ant target - dtd validation

To acomplish this specific task and automate the xml injections there is a tool called XmlTask which can be download here.

For more information about how to write a ant target or use xmltask you can refer this guide.

This article is not about how to use xmltask actually it is a situation i have to face whilie using this. My machine connects to a proxy server when it connect to internet or other network and when inserting or updating ant task "xmltask" use the dtd declared in <!DOCTYPE >. Actually it tries to download it if it is not in a local machine. So with the proxy i got java.net.ConnectException .


 [xmltask] It looks like you've got a network error. The probable cause  
  [xmltask] is that you're trying to resolve a DTD on the internet although  
  [xmltask] you don't know it! Check your XML for DTDs external to your network  
  [xmltask] and read the Ant documentation for <xmlcatalog>. XMLTask will support  
  [xmltask] usage of <xmlcatalog>. See the following:  
  [xmltask] http://ant.apache.org/manual/CoreTypes/xmlcatalog.html  
  [xmltask] http://www.oopsconsultancy.com/software/xmltask  
  [xmltask] If this isn't the problem, then please report this error to the support  
  [xmltask] mailing list. Thanks!  
  [xmltask] Connection refused  
  [xmltask]   at com.oopsconsultancy.xmltask.ant.XmlTask.documentFromStream(XmlTask.java:372)  
  [xmltask]   at com.oopsconsultancy.xmltask.ant.XmlTask.documentFromFile(XmlTask.java:400)  
  [xmltask]   at com.oopsconsultancy.xmltask.ant.XmlTask.access$000(XmlTask.java:27)  
  [xmltask]   at com.oopsconsultancy.xmltask.ant.XmlTask$InputFile.getDocument(XmlTask.java:216)  
  [xmltask]   at com.oopsconsultancy.xmltask.ant.XmlTask.execute(XmlTask.java:651)  
  [xmltask]   at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)  
  [xmltask]   at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)  
  [xmltask]   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
  [xmltask]   at java.lang.reflect.Method.invoke(Method.java:597)  
  [xmltask]   at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)  
  [xmltask]   at org.apache.tools.ant.Task.perform(Task.java:348)  
  [xmltask]   at org.apache.tools.ant.Target.execute(Target.java:357)  
  [xmltask]   at org.apache.tools.ant.Target.performTasks(Target.java:385)  
  [xmltask]   at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)  
  [xmltask]   at org.apache.tools.ant.Project.executeTarget(Project.java:1306)  
  [xmltask]   at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)  
  [xmltask]   at org.apache.tools.ant.Project.executeTargets(Project.java:1189)  
  [xmltask]   at org.apache.tools.ant.Main.runBuild(Main.java:758)  
  [xmltask]   at org.apache.tools.ant.Main.startAnt(Main.java:217)  
  [xmltask]   at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)  
  [xmltask]   at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)  
  [xmltask] Caused by: java.net.ConnectException: Connection refused  
  [xmltask]   at java.net.PlainSocketImpl.socketConnect(Native Method)  
  [xmltask]   at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)  
  [xmltask]   at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)  
  [xmltask]   at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)  
  [xmltask]   at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)  
  [xmltask]   at java.net.Socket.connect(Socket.java:529)  
  [xmltask]   at java.net.Socket.connect(Socket.java:478)  
  [xmltask]   at sun.net.NetworkClient.doConnect(NetworkClient.java:163)  
  [xmltask]   at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)  
  [xmltask]   at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)  
  [xmltask]   at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)  
  [xmltask]   at sun.net.www.http.HttpClient.New(HttpClient.java:306)  
  [xmltask]   at sun.net.www.http.HttpClient.New(HttpClient.java:323)  
  [xmltask]   at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:860)  
  [xmltask]   at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:801)  
  [xmltask]   at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:726)  
  [xmltask]   at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1049)  
  [xmltask]   at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)  
  [xmltask]   at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source)  
  [xmltask]   at org.apache.xerces.impl.XMLEntityManager.startDTDEntity(Unknown Source)  
  [xmltask]   at org.apache.xerces.impl.XMLDTDScannerImpl.setInputSource(Unknown Source)  
  [xmltask]   at org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(Unknown Source)  
  [xmltask]   at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)  
  [xmltask]   at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)  
  [xmltask]   at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)  
  [xmltask]   at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)  
  [xmltask]   at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)  
  [xmltask]   at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)  
  [xmltask]   at com.oopsconsultancy.xmltask.ant.XmlTask.documentFromStream(XmlTask.java:356)  
  [xmltask]   ... 20 more  
  [xmltask] --- Nested Exception ---  
  [xmltask] java.net.ConnectException: Connection refused  
  [xmltask]   at java.net.PlainSocketImpl.socketConnect(Native Method)  
  [xmltask]   at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)  
  [xmltask]   at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)  
  [xmltask]   at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)  
  [xmltask]   at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)  
  [xmltask]   at java.net.Socket.connect(Socket.java:529)  
  [xmltask]   at java.net.Socket.connect(Socket.java:478)  
  [xmltask]   at sun.net.NetworkClient.doConnect(NetworkClient.java:163)  
  [xmltask]   at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)  
  [xmltask]   at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)  
  [xmltask]   at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)  
  [xmltask]   at sun.net.www.http.HttpClient.New(HttpClient.java:306)  
  [xmltask]   at sun.net.www.http.HttpClient.New(HttpClient.java:323)  
  [xmltask]   at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:860)  
  [xmltask]   at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:801)  
  [xmltask]   at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:726)  
  [xmltask]   at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1049)  
  [xmltask]   at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)  
  [xmltask]   at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source)  
  [xmltask]   at org.apache.xerces.impl.XMLEntityManager.startDTDEntity(Unknown Source)  
  [xmltask]   at org.apache.xerces.impl.XMLDTDScannerImpl.setInputSource(Unknown Source)  
  [xmltask]   at org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(Unknown Source)  
  [xmltask]   at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)  
  [xmltask]   at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)  
  [xmltask]   at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)  
  [xmltask]   at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)  
  [xmltask]   at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)  
  [xmltask]   at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)  
  [xmltask]   at com.oopsconsultancy.xmltask.ant.XmlTask.documentFromStream(XmlTask.java:356)  
  [xmltask]   at com.oopsconsultancy.xmltask.ant.XmlTask.documentFromFile(XmlTask.java:400)  
  [xmltask]   at com.oopsconsultancy.xmltask.ant.XmlTask.access$000(XmlTask.java:27)  
  [xmltask]   at com.oopsconsultancy.xmltask.ant.XmlTask$InputFile.getDocument(XmlTask.java:216)  
  [xmltask]   at com.oopsconsultancy.xmltask.ant.XmlTask.execute(XmlTask.java:651)  
  [xmltask]   at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)  
  [xmltask]   at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)  
  [xmltask]   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
  [xmltask]   at java.lang.reflect.Method.invoke(Method.java:597)  
  [xmltask]   at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)  
  [xmltask]   at org.apache.tools.ant.Task.perform(Task.java:348)  
  [xmltask]   at org.apache.tools.ant.Target.execute(Target.java:357)  
  [xmltask]   at org.apache.tools.ant.Target.performTasks(Target.java:385)  
  [xmltask]   at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)  
  [xmltask]   at org.apache.tools.ant.Project.executeTarget(Project.java:1306)  
  [xmltask]   at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)  
  [xmltask]   at org.apache.tools.ant.Project.executeTargets(Project.java:1189)  
  [xmltask]   at org.apache.tools.ant.Main.runBuild(Main.java:758)  
  [xmltask]   at org.apache.tools.ant.Main.startAnt(Main.java:217)  
  [xmltask]   at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)  
  [xmltask]   at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)  

what i did is as the tutorial dtd section suggested i have define <xmlcatalog> tag and map the local dtd source file to the public id like below example.


 <xmlcatalog id="dtd">  
   <dtd   
    publicId="-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"   
    location="./servlet-2.3.dtd"/>   
 </xmlcatalog>  


and then it gives another error when the edited xml file is parsing by my another program. The error is due to <!DOCTYPE> declaration is missing.
What happen is when we use xmlcatalog to define the local path , and when we insert a xml code to the document and write it back to a file , it elemenates the <!DOCTYPE > declaration in the newly writing file. If we overide the exisiting file we loose it from the only file we have. So to overcome this problem what i did was insert public id and system uril inside the <xmltask> tag itself like below.

 <xmltask source="etc/hibernate.cfg.xml" dest="etc/hibernate.cfg.xml" public="-//Hibernate/Hibernate Configuration DTD 3.0//EN"   
          system="http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">  
                <xmlcatalog id="dtd">