This is a recommended way to access WS Metadata:
FileObject fo = ...; // this is a file object from some project (even project directory is possible)
JAXWSSupport support = JAXWSSupport.getJAXWSSupport(fo);
MetadataModel<WebservicesMetadata> wsModel = support.getWebservicesMetadataModel();
if (wsModel!=null) {
try {
List<WS> wsList = wsModel.runReadAction(new MetadataModelAction<WebservicesMetadata, List<WS>>() {
public List<WS> run(WebservicesMetadata metadata) {
List<WS> result = new ArrayList<WS>();
Webservices webServices = metadata.getRoot();
for (WebserviceDescription wsDesc:webServices.getWebserviceDescription()) {
WS ws = new WS();
ws.setName(wsDesc.getWebserviceDescriptionName());
ws.setWsdlFile(wsDesc.getWsdlFile());
result.add(ws);
}
return result;
}
});
// do whatever you want with wsList
} catch (java.io.IOException ex) { ... }
}
private class WS {
private String name;
private String wsdlFile;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getWsdlFile() {
return wsdlFile;
}
public void setWsdlFile(String wsdlFile) {
this.wsdlFile = wsdlFile;
}
}
FileObject fo = ...; // this is a file object from some project (even project directory is possible)
JAXWSSupport support = JAXWSSupport.getJAXWSSupport(implClassFo);
MetadataModel<WebservicesMetadata> wsModel = support.getWebservicesMetadataModel();
if (wsModel!=null) {
try {
List<WebserviceDescription> wsList = wsModel.runReadAction(new MetadataModelAction<WebservicesMetadata, List<WebserviceDescription>>() {
public List<WebserviceDescription> run(WebservicesMetadata metadata) {
List<WebserviceDescription> result = new ArrayList<WebserviceDescription>();
Webservices webServices = metadata.getRoot();
for (WebserviceDescription wsDesc:webServices.getWebserviceDescription()) {
result.add(wsDesc);
}
return result;
}
});
// do whatever you want with wsList
} catch (java.io.IOException ex) { ... }
}
See also this document : Java EE metadata model user's guide