Ho creato un modulo di registrazione nel file jsp con jsf e provo a collegarlo con un servizio web per passare attraverso questo gli elementi a un database.java.lang.NoClassDefFoundError: org/apache/commons/discovery/tools/DiscoverSingleton
Quando si preme il pulsante di invio viene visualizzato un errore. Non penso che il problema riguardi il codice di connessione, ma non ne sono sicuro.
Qualcuno può dirmi qualcosa che forse mi aiuta in qualche modo?
errore:
javax.servlet.ServletException: #{formabean.submitdetails}: java.lang.NoClassDefFoundError: org/apache/commons/discovery/tools/DiscoverSingleton
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
mia forma jsp:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<f:view>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Form</title>
</head>
<body>
<div align="right" >
<p>
<br>.............
<h:commandButton value="submit" type="submit"
action="#{formabean.submitdetails}" />
</h:form>
</body>
</html>
</f:view>
mia Bean classe "formavar":
package org.forma;
import org.imigrant.Migration.MigrationResult;
import org.imigrant.Migration.MigrationWS_PortType;
import org.imigrant.Migration.MigrationWS_Service;
import org.imigrant.Migration.MigrationWS_ServiceLocator;
/** libraries for Web Service*/
/**
*
* @author USER
*/
public class formavar {
private String name;
private String lastname;.....
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the surname
*/
public String getLastname() {
return lastname;
}
/**
* @param surname the surname to set
*/
public void setLastname(String lastname) {
this.lastname = lastname;
}......
public String submitdetails() {
String migrationURL = "http://localhost:8080/mule-tomcat/ESB/Migration?wsdl";
MigrationResult registrationResult = new MigrationResult();
try {
MigrationWS_Service service = new MigrationWS_ServiceLocator(migrationURL);
MigrationWS_PortType port = service.getMigrationImplPort();
registrationResult = port.registerDoc(
null,
this.granting,
this.expire_date,
this.name,
this.lastname,.............
);
return "OK";
} catch (Exception ex) {
return "ERROR "+ex.getMessage();
}
//return "OK";
}
}
e l'xml di configurazione:
<managed-bean>
<managed-bean-name>formabean</managed-bean-name>
<managed-bean-class>org.forma.formavar</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
La BalusC risposta è corretta. Si noti che sembra che si sia verificato l'errore dopo una distribuzione e non durante la compilazione. Per me, questo indica che hai il barattolo di scoperta di Apache Commons, ma non lo stai distribuendo con la tua applicazione. Se si sta costruendo un file di guerra, è possibile inserire il jar di scoperta nel classpath di runtime posizionandolo nella directory/WEB-INF/lib (in the war). – DwB