В моем примере первый метод 'mapVM' из приведенного ниже класса возвращает набор 'VmStatistics', вызывающий ошибку следующим образом:
An internal error occurred during: "Generating JAX-WS Web Services".
Unable to create JAXBContext
Хотя, если я отключу метод, объект Hibernate 'VmStatistics' не будет отображен при создании ws. То же самое происходит с другими объектами, поэтому мне не хватает бобов в WS.
Логика гибернации находится в файле jar и содержит 6 компонентов.
Это мой класс для генерации WS (содержит 5 методов)
public class DBHelper {
public DBHelper(){}
public static Set<VmStatistics> mapVM(Vm vm){
Set< VmStatistics> s = vm.getVmStatisticses();
return s;
}
/**
* Loads all companies
*
* @return A list of company objects
*/
public static ArrayList<Company> getCompanyList(){
ArrayList<Company> lCompanies = new ArrayList<Company>();
...
return lCompanies;
}
/**
* Loads all the available countries
*
* @return
* Returns a list of string objects
*/
public static ArrayList<String> getCountryList(){
ArrayList<String> lCountires = new ArrayList<String>();
...
return lCountires;
}
/**
* Loads the companies of the given country name
*
* @param pCountry a given country name
*
* @return A list of company objects
*/
public static ArrayList<Company> getCompanyListByCountry(String pCountry){
ArrayList<Company> lCompanies = new ArrayList<Company>();
...
return lCompanies;
}
/**
* Loads the latest reading performed in the datacenter
*
* @param pCountry
* A given country name
*
* @param pCompany
* A given company object
*
* @return The list of server objects which contains the associated VMs and the relative statistics
*/
public static Collection<Server> getCurrentReading(String pCountry, Company pCompany){
...
return lServer;
}
}
Теперь я попытался добавить bean-компоненты вручную в файл схемы и wsdl из ws, и он принимает их, но при развертывании на этапе tomcat выдает ту же ошибку, но, поскольку это ошибка журнала, а не затмение, я думаю, что это Понятнее понять:
Я попытался сгенерировать вручную, изменив файлы sdl и schema и добавив типы, которые не отображаются ... и при развертывании на tomcat face выдает ту же ошибку ... возможно, это будет более понятно, так как это ошибка журнала:
SEVERE: WSSERVLET11: failed to parse runtime descriptor: javax.xml.ws.WebServiceException: Unable to create JAXBContext
javax.xml.ws.WebServiceException: Unable to create JAXBContext
at com.sun.xml.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:158)
at com.sun.xml.ws.model.AbstractSEIModelImpl.postProcess(AbstractSEIModelImpl.java:87)
at com.sun.xml.ws.model.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:262)
at com.sun.xml.ws.server.EndpointFactory.createSEIModel(EndpointFactory.java:322)
at com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:188)
at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:467)
at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters(DeploymentDescriptorParser.java:253)
at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse(DeploymentDescriptorParser.java:147)
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:108)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.security.PrivilegedActionException: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
java.sql.Timestamp does not have a no-arg default constructor.
this problem is related to the following location:
at java.sql.Timestamp
at public java.sql.Timestamp org.qcri.power.db.AbstractServerStatistics.getTimestamp()
at org.qcri.power.db.AbstractServerStatistics
at org.qcri.power.db.ServerStatistics
at private java.util.Set org.qcri.power.ws.jaxws.MapServerResponse._return
at org.qcri.power.ws.jaxws.MapServerResponse
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.xml.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:148)
... 32 more
Спасибо,