Hi,
Below are some issues for which I need help.
In my project I am trying to use Axis. But while performing the task for
java2wsdl or wsdl2java I am facing the below issues.
1) In the webservices development I am using the Java Interfaces as
a) Return type as Interface instead of returning the
concrete class type.
b) Method argument as Java Interface type.
c) In the service implementation also Java Interfaces are
used.
While running "Java2wsdl" ant task receiving the warning message as "-
[axis-java2wsdl]- The class <Interface Name> does not contain a default
constructor, which is a requirement for a bean class. The class cannot
be converted into an xml schema type. An xml schema anyType will be
used to define this class in the wsdl file.
2) If we ignore the above mentioned warning then while running
"wsdl2java" task returning the error message as
java.io.IOException: Type {http://<url>}<Interface Name> is referenced
but not defined.
at
org.apache.axis.wsdl.symbolTable.SymbolTable.checkForUndefined(SymbolTab
le.java:665)
at
org.apache.axis.wsdl.symbolTable.SymbolTable.add(SymbolTable.java:545)
at
org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:5
18)
at
org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:4
95)
at
org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361)
How to fix this issue. We have tried to fix this issue as : instead of
returning the Java Interface reference returning the reference of the
object which is implementing the interface. The issue get resolved . Do
we have any other way to resolve the issue.
3) Ant targets are as below:
For java2wsdl
<axis-java2wsdl classpathref="java2wsdl.classpath"
output="<Complete location to store generated wsdl file >"
location="${_axis.pkg_prefix}/axis/services/<webservice
name>"
namespace="${_axis.url_prefix}"
classname="<service class name>"
implclass="<Base class of the webservice class>"
exclude="<List of excluded methods>">
<mapping namespace="<namespace name>" package="<webservice
package name>"/>
</axis-java2wsdl>
And wsdl2java as
<axis-wsdl2java url="<webservice wsdl file>"
output="<Location weher want to copy the service
classes>"
deployscope="application"
serverSide="yes"
/>
4) In project we have also developed the Exception classes in which one
of the data members is of type "Throwable" and there are corresponding
setter and getter methods for that data member. While converting for
"Java2Wsdl" for "Throwable" also it is giving the warning message as
[axis-java2wsdl] - The class java.lang.Throwable is defined in a java or
javax package and cannot be converted into an xml schematype. An xml
schema anyType will be used to define this class in the wsdl file.
If this warning message is ignore and run "wsdl2java" then in the
generated file for "Throwable" object type it is considering the data
type as "java.lang.Object".
Same warning occurs for the class "Class".
5) There are certain classes present in the project in which default
constructor is not there but the overloaded(argumented) constructors
are there but they are defined as "private" and the objects are created
in the same class with those overloaded constructors. If we add the
default constructor in those classes to get the rid from the warning
message receiving from "java2wsdl" then that will be like violating the
security by adding the public constructor in that.
6) deploy.wsdd and undeploy.wsdd is being generated for each Wsdl file
from "wsdl2java" task. Since I am having multiple wsdl files in the
project so if I run wsdl2java for all the wsdl files simultaneously then
in deploy.wsdd the service entry is being available of the service from
the last wsdl file only. So how to generate independent deploy.wsdd and
undeploy.wsdd for each webservice instead of creating only one. Is there
any way to create separate "<servicename>-deploy.wsdd" and
"<servicename>-undeploy.wsdd" for each wsdl file.
7) We have written one test web service and putting that file as
"Test.jws" under "Axis.war" because of thet wsdl's will be generated
dynamically but then that will be the performance issue. Instead of
that if we generate the wsdl's first , then whether the Axis will
recognize those and where to keep those wsdl files under Axis.war for
Axis reference.
8) For deploying those webservices in Weblogic and websphere created
through Axis do we need to do any extra settings?
9) If the Axis.war file will be kept inside one of the applications ear
file, in the Axis.war file only Axis related jar files are kept and the
actual wsdl files and the webservices classes are kept in some other jar
which is being kept at some other location then whether axis will
recognize that. What the extra settings needs to be done for this.
Thanks and Regards,
Anagha