Hi I am new to web services. I want to make the ejb bean methods available to the remote client. I have created stateless session bean for this. I created the jar file and while creating the ear file I am getting the error. I am using ant utility to create the ear file. I am attaching my build.xml here. <project name="webServicesExample" default="build"> <target name="build" > <delete dir="build_dir" /> <mkdir dir="build_dir" /> <copy todir="build_dir" file="trader.jar"/> <servicegen destEar="build_dir/trader.ear" contextURI="web_services"> <service ejbJar="build_dir/trader.jar" targetNamespace="http://www.bea.com/examples/Trader" serviceName="TraderService" serviceURI="/TraderService" generateTypes="True" expandMethods="True" > </service> </servicegen> </target> </project>
When I run the ant command from the folder where this build.xml and the trade.jar files are present, it is giving the following exception. Buildfile: build.xml build: [mkdir] Created dir: E:\web services\build_dir [copy] Copying 1 file to E:\web services\build_dir BUILD FAILED file:E:/web%20services/build.xml:8: Could not create task or type of type: servi cegen. Ant could not find the task or a class this task relies upon. This is common and has a number of causes; the usual solutions are to read the manual pages then download and install needed JAR files, or fix the build file: - You have misspelt 'servicegen'. Fix: check your spelling. - The task needs an external JAR file to execute and this is not found at the right place in the classpath. Fix: check the documentation for dependencies. Fix: declare the task. - The task is an Ant optional task and optional.jar is absent Fix: look for optional.jar in ANT_HOME/lib, download if needed - The task was not built into optional.jar as dependent libraries were not found at build time. Fix: look in the JAR to verify, then rebuild with the needed libraries, or download a release version from apache.org - The build file was written for a later version of Ant Fix: upgrade to at least the latest release version of Ant - The task is not an Ant core or optional task and needs to be declared using <taskdef>. Remember that for JAR files to be visible to Ant tasks implemented in ANT_HOME/lib, the files must be in the same directory or on the classpath Please neither file bug reports on this problem, nor email the Ant mailing lists, until all of these causes have been explored, as this is not an Ant bug. Total time: 0 seconds
If anybody faced such type of problem, please help me. Thanks archana
It looks more of an ant related question. You are using a custom task servicegen. You need to have a taskdef element corresponding to that. your build.xml s'd probably have an entry like this: <taskdef name="serivegen" classname=" the java class that implements this task"> Now am not sure as to what is the implementation class for this task.
posted 16 years ago
Hi karthik Thanks for the reply. I have included taskdef element in the xml file. Now it is not giving the exception earlier, but it is giving different exception. Buildfile: build.xml build: [mkdir] Created dir: E:\sample\build_dir [copy] Copying 1 file to E:\sample\build_dir No public execute() in class weblogic.webservice.servicegen BUILD FAILED file:E:/sample/build.xml:6: No public execute() in class weblogic.webservice.ser vicegen Total time: 0 seconds The servicegen class file is present in the webservices.jar file in the weblogic server lib directory. I have just included it in the class path. I opened the code of the corresponding java file. It is not having the execute method. I cannot change this class as it is supplied by weblogic. Can you tell me suggest me what to do? Thanks, archana
posted 16 years ago
Originally posted by archana kaul: I have included taskdef element in the xml file. No public execute() in class weblogic.webservice.servicegen BUILD FAILED file:E:/sample/build.xml:6: No public execute() in class weblogic.webservice.servicegen
How did you figure out the "weblogic.webservice.servicegen" is the class that implements this task? Did you notice that in some other sample buid.xml file that ships with weblogic? Btw, which version of weblogic are you using? I w'd expect the implementation class to be present under some x.y.z.taskdefs package or let me try be more precise :-) xyx.weblogic.ant.taskdefs package or something along those lines. I mean the task name,implementation class mapping is maintained in a properties file. It might be called default.properties (just a guess). Try lookingup weblogic javadocs as well. You might find the implementation class under weblogic taskdef package.
Did you find the solution for your problem. I was facing the same probelm and I add following line in my build.xml. <taskdef name="servicegen" classname="weblogic.ant.taskdefs.webservices.servicegen.ServiceGenTask" classpathref="project.class.path" /> It works if I have the weblocig lib directory in my classpath. But I want to compile webservice on unix machine and it doesn't have weblogic installed and it throws me exception saying couldn't find 'package weblogic.xml.schema.binding' but I checked and that package is available in webservice.jar. Have any input ? Thanks, Chirag