2
我想部署一個web服務,當我這樣做,我有一個錯誤:java.lang.StackTraceElement中沒有一個無參數的默認構造函數
avax.xml.ws.WebServiceException: Unable to create JAXBContext
at com.sun.xml.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:171)
at com.sun.xml.ws.model.AbstractSEIModelImpl.postProcess(AbstractSEIModelImpl.java:99)
at com.sun.xml.ws.model.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:250)
at com.sun.xml.ws.server.EndpointFactory.createSEIModel(EndpointFactory.java:343)
at com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:205)
at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:513)
at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:568)
at org.glassfish.webservices.WSServletContextListener.registerEndpoint(WSServletContextListener.java:260)
at org.glassfish.webservices.WSServletContextListener.contextInitialized(WSServletContextListener.java:99)
at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:4750)
at com.sun.enterprise.web.WebModule.contextListenerStart(WebModule.java:550)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:5366)
at com.sun.enterprise.web.WebModule.start(WebModule.java:498)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:917)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:901)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:733)
at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2000)
at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1651)
at com.sun.enterprise.web.WebApplication.start(WebApplication.java:109)
at org.glassfish.internal.data.EngineRef.start(EngineRef.java:130)
at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:269)
at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:294)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:462)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:382)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:355)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1064)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:96)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1244)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1232)
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:459)
at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:209)
at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:168)
at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:238)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.security.PrivilegedActionException: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
java.lang.StackTraceElement does not have a no-arg default constructor.
this problem is related to the following location:
at java.lang.StackTraceElement
at public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()
at java.lang.Throwable
at java.lang.Exception
at java.sql.SQLException
at public java.sql.SQLException com.parkinsoncontrol.jaxws.SQLExceptionBean.nextException
at com.parkinsoncontrol.jaxws.SQLExceptionBean
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.xml.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:158)
... 49 more
和我想要的代碼部署這是一個:
@WebService(serviceName = "WsParkinsonControl")
public class WsParkinsonControl {
private Connection conectar(){
this.conexion = Conector.getConnection(Conector.getCibertec());
return this.conexion;
}
/**
* Web service operation
*/
@WebMethod(operationName = "registerUser")
public TDataReturn registerUser(@WebParam(name = "user") TDataUser user) throws Exception {
//TODO write your implementation code here:
TDataReturn data= new TDataReturn();
this.conexion = Conector.getConnection(Conector.getCibertec());
try {
this.conexion.setAutoCommit(false);
SQL="INSERT INTO user (name,patronimic,surname,phone,address,country,city,village,isPacient,isDoctor,licensenumber,email,password,licenseNumberDoctor,birthdate,parkinson_idparkinson) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
this.pstm = this.conexion.prepareStatement(SQL);
// `iduser` INT NOT NULL AUTO_INCREMENT,
this.pstm.setString(1,user.getName());
this.pstm.setString(2,user.getPatronimic());
this.pstm.setString(3,user.getSurname());
this.pstm.setString(4,user.getPhone());
this.pstm.setString(5,user.getAddress());
this.pstm.setString(6,user.getCountry());
this.pstm.setString(7,user.getCity());
this.pstm.setString(8,user.getVillage());
this.pstm.setBoolean(9,user.isIsPacient());
this.pstm.setBoolean(10,user.isIsDoctor());
this.pstm.setString(11,user.getLicenseNumber());
this.pstm.setString(12,user.getEmail());
this.pstm.setString(13,user.getPassword());
this.pstm.setString(14,user.getLicenseNumberDoctor());
this.pstm.setString(15, user.getBirthdate());
this.pstm.setInt(16,user.getParkinson());
int ejecutado = this.pstm.executeUpdate();
System.out.println("Ejecutado es:"+ejecutado);
if(ejecutado==0){
data.setMiss(1);
data.setDescription_m("Error after recording an user");
throw new Exception("Error after recording an user");
}
System.out.println("Voy a hacer el commit");
this.conexion.commit();
} catch (SQLException ex) {
System.out.println("Ejecutado es despues:0");
Logger.getLogger(WsParkinsonControl.class.getName()).log(Level.SEVERE, null, ex);
}
this.conexion.close();
data.setMiss(0);
data.setDescription_m("");
System.out.println("Data miss es:"+data.getMiss());
return data;
}
/**
* Web service operation
*/
@WebMethod(operationName = "modifyUser")
public TDataReturn modifyUser(@WebParam(name = "user") TDataUser user) {
//TODO write your implementation code here:
TDataReturn data= new TDataReturn();
return data;
}
/**
* Web service operation
*/
@WebMethod(operationName = "logon")
public Boolean logon(@WebParam(name = "login") String login, @WebParam(name = "password") String password) throws SQLException {
//TODO write your implementation code here:
this.conexion=conectar();
System.out.println("Login is "+login);
System.out.println("Password is "+password);
try {
SQL="SELECT idusuario from user where email=? AND password=?";
this.pstm = this.conexion.prepareStatement(SQL);
this.pstm.setString(1, login);
this.pstm.setString(2, password);
this.rs = this.pstm.executeQuery();
if(this.rs.getFetchSize()!=0){
return true;
}
else{
return false;
}
} catch (SQLException ex) {
Logger.getLogger(WsParkinsonControl.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("Login correcto");
this.conexion.close();
return true;
}
/**
* Web service operation
*/
@WebMethod(operationName = "list_users")
public TAnswerUsers list_users(@WebParam(name = "iduser") int iduser) {
//TODO write your implementation code here:
TAnswerUsers result = new TAnswerUsers();
this.conexion=conectar();
try {
//this.stm = this.conexion.createStatement();
if(iduser==0){
SQL="SELECT t1.id_cuenta as id_cuenta,t1.id_cuenta_padre as id_cuenta_padre,";
SQL.concat("t1.nombre as nombre,t1.cif as cif,t1.impuesto as impuesto,t1.descuento as descuento,");
SQL.concat("t1.nivel as nivel,t1.borrado as borrado,t1.cod_cliente as cod_cliente FROM cuentas t1");
SQL.concat("WHERE t1.nivel >=?");
SQL.concat("AND t1.borrado=?");
this.pstm = this.conexion.prepareStatement(SQL);
this.rs = this.pstm.executeQuery();
if(this.rs.getFetchSize()!=0){
load_data_user(rs,result.getDataUser());
}
result.setMiss(0);
result.setDescription_miss("");
return result;
}else{
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
result.setMiss(-1);
result.setDescription_miss(e.getMessage());
return result;
}
result.setMiss(0);
result.setDescription_miss("");
return result;
}
private void load_data_user(ResultSet rs2, TFieldsUser[] dataUser) throws SQLException {
int index=0;
dataUser=resizeFieldsUser(dataUser,rs2);
while(rs2.next()){
dataUser[index]=new TFieldsUser();
dataUser[index].setName(rs2.getString("name"));
dataUser[index].setPatronimic(rs2.getString("patronimic"));
dataUser[index].setSurname(rs2.getString("surname"));
dataUser[index].setPhone(rs2.getString("phone"));
dataUser[index].setAddress(rs2.getString("address"));
dataUser[index].setCountry(rs2.getString("country"));
dataUser[index].setCity(rs2.getString("city"));
dataUser[index].setEmail(rs2.getString("email"));
dataUser[index].setPassword(rs2.getString("password"));
index++;
}
}
private TFieldsUser[] resizeFieldsUser(TFieldsUser[] dataUser, ResultSet rs2) throws SQLException {
int tam=rs.getFetchSize();
int n=++tam;
TFieldsUser [] newArray= new TFieldsUser[n];
for(int cnt=0;cnt<rs.getFetchSize();cnt++){
newArray[cnt]=dataUser[cnt];
}
return newArray;
}
}
我使用NetBeans 7.2.1工作和GlassFish 3.1.2,你可以檢查它是一個簡單的代碼,但是當我嘗試部署它,我崩潰,請問我該怎麼辦才能解決這個問題?非常感謝
爲您的課堂添加一個空的公共構造函數。 – 2014-03-01 09:18:55
我嘗試了它,但它不工作。 – zoit
可能的重複[無法創建JAXBContext創建我的wsdl](http://stackoverflow.com/questions/7232331/unable-to-create-jaxbcontext-creating-my-wsdl) – rzymek