operationtype commons java jsp jsf jsp-tags

commons - java.lang.noclassdeffounderror: javax/wsdl/operationtype



java.lang.NoClassDefFoundError: org/apache/commons/discovery/tools/DiscoverSingleton (2)

java.lang.NoClassDefFoundError: org / apache / commons / discovery / tools / DiscoverSingleton

Esto solo significa que la clase mencionada (o un archivo JAR que contiene la clase) falta en el classpath del tiempo de ejecución de webapp.

Como lo indica el nombre del paquete, la clase es parte de Apache Commons Discovery, que está disponible para su descarga en http://commons.apache.org/discovery . Si solo deja caer su (s) archivo (s) JAR en /WEB-INF/lib de su aplicación web (que está cubierta por el classpath de tiempo de ejecución de webapp), entonces este error debería desaparecer.

Tenga en cuenta que este problema no tiene nada que ver con JSF / JSP, y mucho menos con Java EE. Es solo Java básico. La causa raíz de la excepción también lo insinúa; es del paquete java.lang .

He creado un formulario de registro en el archivo jsp con jsf e intento conectarlo con un servicio web para pasar los elementos a una base de datos.

Cuando presiono el botón de enviar me sale un error. No creo que el problema se relacione con el código de conexión, pero no estoy seguro.

¿Alguien puede decirme algo que tal vez me ayude de alguna manera?

error:

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)

mi formulario 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>

mi clase Bean "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"; } }

y el config xml:

<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>


Las clases especificadas faltan en la ruta de clases del proyecto en el momento de la ejecución de la prueba.

La solución es agregar la siguiente dependencia a tu pom:

<dependency> <groupId>commons-discovery</groupId> <artifactId>commons-discovery</artifactId> <version>0.5</version> <scope>test</scope> </dependency>