我正在使用Netbeans 6.8,jdk 1.6.0.21和jre6u21 ....我开发了一个简单的Web服务,只使用sql连接,oracle数据源,当我尝试部署它时,它每次都给我相同的异常:
SEVERE: Exception sending context initialized event to listener instance of class com.sun.xml.ws.transport.http.servlet.WSServletContextListener
com.sun.xml.ws.transport.http.servlet.WSServletException: WSSERVLET11: failed to parse runtime descriptor: javax.xml.ws.WebServiceException: Unable to create JAXBContext
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:139)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
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:546)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:563)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
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:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: javax.xml.ws.WebServiceException: Unable to create JAXBContext
at com.sun.xml.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:166)
at com.sun.xml.ws.model.AbstractSEIModelImpl.postProcess(AbstractSEIModelImpl.java:94)
at com.sun.xml.ws.model.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:258)
at com.sun.xml.ws.server.EndpointFactory.createSEIModel(EndpointFactory.java:338)
at com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:201)
at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:505)
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:124)
... 24 more
Caused by: java.security.PrivilegedActionException: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 3 counts of IllegalAnnotationExceptions
java.sql.Connection is an interface, and JAXB can't handle interfaces.
this problem is related to the following location:
at java.sql.Connection
at public java.sql.Connection vas.gift.jaxws.LogHistory.arg0
at vas.gift.jaxws.LogHistory
java.sql.Connection does not have a no-arg default constructor.
this problem is related to the following location:
at java.sql.Connection
at public java.sql.Connection vas.gift.jaxws.LogHistory.arg0
at vas.gift.jaxws.LogHistory
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 vas.gift.jaxws.SQLExceptionBean.nextException
at vas.gift.jaxws.SQLExceptionBean
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.xml.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:153)
... 32 more
Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 3 counts of IllegalAnnotationExceptions
java.sql.Connection is an interface, and JAXB can't handle interfaces.
this problem is related to the following location:
at java.sql.Connection
at public java.sql.Connection vas.gift.jaxws.LogHistory.arg0
at vas.gift.jaxws.LogHistory
java.sql.Connection does not have a no-arg default constructor.
this problem is related to the following location:
at java.sql.Connection
at public java.sql.Connection vas.gift.jaxws.LogHistory.arg0
at vas.gift.jaxws.LogHistory
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 vas.gift.jaxws.SQLExceptionBean.nextException
at vas.gift.jaxws.SQLExceptionBean
at com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:102)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:472)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:302)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1140)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:154)
at com.sun.xml.bind.api.JAXBRIContext.newInstance(JAXBRIContext.java:106)
at com.sun.xml.ws.developer.JAXBContextFactory$1.createJAXBContext(JAXBContextFactory.java:109)
at com.sun.xml.ws.model.AbstractSEIModelImpl$1.run(AbstractSEIModelImpl.java:161)
at com.sun.xml.ws.model.AbstractSEIModelImpl$1.run(AbstractSEIModelImpl.java:154)
... 34 more
现在我知道它与代言有关,我已经尝试了很多选项,比如将netbeans中的jaxws22 jars复制到tomcat中的endorsed目录但是没有任何作用.....我是java和don的新手我知道复杂的缩写..所以请让我知道这个问题的解决方案,请更简单的话.......它真的很紧急....如果有任何oracle jre也安装在机器上重要..:S:S
/ * *要更改此模板,请选择“工具”|模板 *并在编辑器中打开模板。 * /
package vms.wap;
import java.io. ; import java.net。; import java.sql。; import java.util。; import javax.jws。*; import oracle.jdbc.pool.OracleDataSource;
/ ** * * @author muhammad.awais * / @网络服务() 公共课giftingService {
/**
* Web service operation
*/
private String parameterFile;
//return codes
private String VMSUserName;
private String VMSPassword;
private String VMSjdbcUrl;
private String sendSMSUrl;
private String xmsFrom;
private int sessionLA;
private String partyAmessage;
private String partyBmessage;
private String MTLA;
private String tID;
private String mode;
/**
*
*/
public giftingService(){
parameterFile=giftingService.class.getClassLoader()
.getResource("parameters.conf").getPath()
.replaceAll("%20", " ");
LoadParameters();
}
/**
*
* @param username
* @param password
* @param partyA
* @param partyB
* @param serviceID
* @param serviceName
* @param channel
* @return
* @throws SQLException
*/
@WebMethod(operationName = "giftRequest")
public String giftRequest(@WebParam(name = "username")
String username, @WebParam(name = "password")
String password, @WebParam(name = "partyA")
String partyA, @WebParam(name = "partyB")
String partyB, @WebParam(name = "serviceID")
String serviceID, @WebParam(name = "serviceName")
String serviceName, @WebParam(name = "channel")
String channel) throws SQLException {
//TODO write your implementation code here:
String UserAuthResp ="";
String response="0";
String lookupResp="";
String createSessResp="";
//String lookupArr[];
int correlationid=0;
String sendSMSResp = "";
int LA=0;
Connection vmsConn = createVMSConnection(VMSUserName, VMSPassword, VMSjdbcUrl);
UserAuthResp = verifyCredentials (vmsConn,username,password,channel);
if(UserAuthResp.equals("1"))
{
lookupResp=lookUpSession (vmsConn, partyB, serviceID);
if(!lookupResp.equals("-8"))
{
LA=getNewSessionLA(LA, sessionLA);
correlationid = getCorrelationID (vmsConn);
createSessResp=createSession(vmsConn, partyA, partyB, correlationid, serviceID,String.valueOf(LA));
if(createSessResp.equals("1"))
{
sendSMSResp=sendSMS(partyB, partyBmessage, correlationid, serviceID, MTLA, createSessResp);
if(sendSMSResp.equals("1"))
response="1";
}
}
}
logHistory (vmsConn, partyA, partyB, partyBmessage, correlationid, serviceID, LA, UserAuthResp, lookupResp, createSessResp, sendSMSResp,response);
vmsConn.close();
return response;
}
/**
*
* @param VMSUsername
* @param VMSPassword
* @param VMSUrl
* @return
* @throws SQLException
*/
public Connection createVMSConnection(String VMSUsername, String VMSPassword, String VMSUrl) throws SQLException
{
Connection vmsConn = null;
OracleDataSource vmsDS = new OracleDataSource();
//vmsConn=null;
try
{
vmsDS.setURL(VMSUrl);
vmsConn = vmsDS.getConnection(VMSUsername, VMSPassword);
}
catch (SQLException ex)
{
}
return vmsConn;
}
/**
*
* @param vmsConn
* @param username
* @param password
* @param channel
* @return
* @throws SQLException
*/
public String verifyCredentials(Connection vmsConn, String username, String password, String channel) throws SQLException
{
ResultSet rs = null;
Statement stmt=null;
String sql="";
String response = "";
try
{
stmt = vmsConn.createStatement();
sql = "select * from lu_vms_wap_users where WAP_Uname = '"+username+"' and WAP_Pwd='"+password+"'and Channel ='"+channel+"' and status = '1'";
rs = stmt.executeQuery(sql);
if(rs.next())
{
response = "1";
}
}
catch (SQLException ex)
{
response="-4";
}
return response;
}
/**
*
* @param vmsConn
* @param partyB
* @param serviceid
* @return
* @throws SQLException
*/
public String lookUpSession(Connection vmsConn, String partyB, String serviceid) throws SQLException
{
ResultSet rs=null;
Statement stmt=null;
String sql="";
String response="";
try
{
stmt = vmsConn.createStatement();
sql = "select LA from tbl_vms_wap_sessions where partyB='"+partyB+"' /*and serviceid='"+serviceid+"'*/ and status = '0' order by LA desc";
rs = stmt.executeQuery(sql);
if(rs.next())
{
response = rs.getString("LA");
}
else
response = "0";
}
catch (SQLException ex)
{
response = "-8";
}
return response;
}
/**
*
* @param LA
* @param sessionLA
* @return
*/
public int getNewSessionLA(int LA, int sessionLA)
{
if(LA == 0)
{
LA=sessionLA;
}
return LA + 1;
}
/**
*
* @param vmsConn
* @return
* @throws SQLException
*/
public int getCorrelationID(Connection vmsConn) throws SQLException
{
ResultSet rs=null;
Statement stmt=null;
String sql="";
int ret=0;
try
{
stmt = vmsConn.createStatement();
sql = "select SEQ_TBLCPAMSGS_ID.nextval from dual";
rs = stmt.executeQuery(sql);
if(rs.next())
{
ret=Integer.parseInt(rs.getString(1));
return ret;
}
else
return 0;
}
catch (SQLException ex)
{
return -5;
}
}
/**
*
* @param vmsConn
* @param partyA
* @param partyB
* @param correlationid
* @param serviceid
* @param LA
* @return
* @throws SQLException
*/
public String createSession(Connection vmsConn, String partyA, String partyB, int correlationid, String serviceid, String LA) throws SQLException
{
Statement stmt=null;
String sql="";
String response="1";
try
{
stmt = vmsConn.createStatement();
sql = "insert into tbl_vms_wap_sessions (id, partyA, partyB, correlationid, serviceid, LA, status) values (seq_vms_wap_session.nextval, '"+partyA+"','"+partyB+"','"+correlationid+"','"+ serviceid+"','"+ LA+"','0')";
stmt.executeQuery(sql);
}
catch (SQLException ex)
{
response="-5";
}
return response;
}
/**
*
* @param vmsConn
* @param partyA
* @param partyB
* @param partyBmessage
* @param correlationid
* @param serviceid
* @param LA
* @param UserAuthResp
* @param lookupResp
* @param createSessResp
* @param sendSMSResp
* @param ReturnCode
* @return
* @throws SQLException
*/
public String logHistory(Connection vmsConn, String partyA, String partyB, String partyBmessage, int correlationid, String serviceid, int LA, String UserAuthResp, String lookupResp, String createSessResp, String sendSMSResp, String ReturnCode) throws SQLException
{
Statement stmt=null;
String sql="";
String response="1";
try
{
stmt = vmsConn.createStatement();
sql = "insert into tbl_vms_wap_hist (id, partyA, partyB, partyBmessage, correlationid, serviceid, LA, UserAuthResp, lookupResp, createSessResp, sendSMSResp, ReturnCode) values (seq_vms_wap_history.nextval, '"+partyA+"','"+partyB+"','"+partyBmessage+"','"+correlationid+"','"+ serviceid+"','"+ LA+"','"+UserAuthResp+"','"+lookupResp+"','"+createSessResp+"','"+sendSMSResp+"','"+ReturnCode+"')";
stmt.executeQuery(sql);
}
catch (SQLException ex)
{
response="-5";
}
return response;
}
/**
*
* @param partyB
* @param partyBmessage
* @param correlationid
* @param serviceid
* @param MTLA
* @param ErrorCode
* @return
*/
public String sendSMS(String partyB, String partyBmessage, int correlationid, String serviceid, String MTLA, String ErrorCode)
{
URL url=null;
URLConnection connection=null;
PrintStream outStream=null;
InputStreamReader isr=null;
BufferedReader inStream=null;
String cgi_Response="";
String inputLine="";
try{
url = new URL(sendSMSUrl);
connection = url.openConnection();
connection.setDoOutput(true);
connection.setUseCaches(false);
outStream = new PrintStream(connection.getOutputStream());
outStream.println((new StringBuilder()).append("to=").append(URLEncoder.encode(partyB, "UTF-8")).append("&from=").append(URLEncoder.encode(xmsFrom, "UTF-8")).append("&service=").append(URLEncoder.encode(String.valueOf(serviceid), "UTF-8")).append("&LA=").append(URLEncoder.encode(MTLA, "UTF-8")).append("&message=").append(URLEncoder.encode(partyBmessage, "UTF-8")).append("&correlationID=").append(URLEncoder.encode(String.valueOf(correlationid), "UTF-8")).append("&serviceID=").append(URLEncoder.encode(String.valueOf(serviceid), "UTF-8")).append("&mode=").append(URLEncoder.encode(String.valueOf(mode), "UTF-8")).append("&tid=").append(URLEncoder.encode(String.valueOf(tID), "UTF-8")).toString());
outStream.flush();
outStream.close();
isr = new InputStreamReader(connection.getInputStream());
inStream = new BufferedReader(isr);
cgi_Response = "";
while ((inputLine = inStream.readLine())!=null){
cgi_Response = cgi_Response+inputLine;
}
}
catch (Exception ex)
{
}
return cgi_Response;
}
private void LoadParameters(){
String Token=null;
String fileLine=null;
try{
FileReader fr= new FileReader(parameterFile);
BufferedReader br= new BufferedReader(fr);
//open file
do{//while not end of file
//read from file
fileLine=br.readLine();
if (fileLine!=null){
//tokenize the line read
StringTokenizer st= new StringTokenizer(fileLine);
//get first token
Token=st.nextToken("=");
if (Token.equals("VMSUserName")){
VMSUserName =st.nextToken();
}else if (Token.equals("VMSPassword")){
VMSPassword =st.nextToken();
}else if (Token.equals("VMSjdbcUrl")){
VMSjdbcUrl =st.nextToken();
}else if (Token.equals("sendSMSUrl")){
sendSMSUrl =st.nextToken();
}else if (Token.equals("xmsFrom")){
xmsFrom =st.nextToken();
}else if (Token.equals("MTLA")){
MTLA =st.nextToken();
}else if (Token.equals("TID")){
tID =st.nextToken();
}else if (Token.equals("MODE")){
mode =st.nextToken();
}else if (Token.equals("sessionLA")){
sessionLA =Integer.parseInt(st.nextToken());
}else if (Token.equals("partyBmessage")){
partyBmessage = st.nextToken();
}
}
}
while(fileLine!=null);
br.close();
}catch(FileNotFoundException e){
}catch(IOException e){
}
}
}
答案 0 :(得分:0)
您似乎尝试序列化连接到XML,导致
java.sql.Connection是一个接口, 并且JAXB无法处理接口。
检查您的注释,如果您没有发现问题,则应将代码附加到您的问题中。
答案 1 :(得分:0)
在createVMSConnection
中,如果您在行上获得SQLException:
vmsDS.setURL(VMSUrl);
vmsConn = vmsDS.getConnection(VMSUsername, VMSPassword);
然后没有显示异常,并且该方法返回null而不是连接。这可能会带来麻烦。
如果不需要实现catch子句,您应该记录异常或留下简短的注释。