Vamos la...
Por via de intendimento, quero criar um webservice que fique gerando um arquivo pramim.
Segue meu código.
Interface:
package com.teste.prototipo;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public interface IServiçoPrototipo {
@WebMethod
public void run();
}
Classe:
package com.teste.prototipo;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebService;
import au.com.bytecode.opencsv.CSVWriter;
@WebService(endpointInterface = "com.teste.IServiçoPrototipo", serviceName = "Prototipo")
public class Prototipo extends Thread implements IServiçoPrototipo {
public Prototipo() {
run();
}
@WebMethod
public void run() {
System.out.println("MinhaThread inicia.");
try {
String arquivosDiretorio = new String("C:\\Users\\Public\\Documents\\teste.txt");
while (true) {
Thread.sleep(500);
System.out.println("Chamando seu verificador de arquivos.");
CSVWriter writer = new CSVWriter(new FileWriter(arquivosDiretorio));
List<String[]> data = new ArrayList<String[]>();
data.add(new String[] { "India", "New Delhi" });
data.add(new String[] { "United States", "Washington D.C" });
data.add(new String[] { "Germany", "Berlin" });
writer.writeAll(data);
writer.close();
}
} catch (InterruptedException exc) {
System.out.println("MinhaThread interrompeu.");
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("MinhaThread terminou.");
}
}
Xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>Prototipo</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<context-param>
<description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>resources.application</param-value>
</context-param>
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>IServiçoPrototipo</servlet-name>
<servlet-class>com.teste.IServiçoPrototipo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>IServiçoPrototipo</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
Erros Jboss:
15:00:49,811 INFO [org.apache.coyote.http11] (MSC service thread 1-5) JBWEB003001: Coyote HTTP/1.1 initializing on : http-localhost/127.0.0.1:8080
15:00:49,823 INFO [org.apache.coyote.http11] (MSC service thread 1-5) JBWEB003000: Coyote HTTP/1.1 starting on: http-localhost/127.0.0.1:8080
15:00:50,060 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-4) JBAS010400: Limite da fonte de dados [java:jboss/datasources/ExampleDS]
15:00:50,287 WARN [org.jboss.as.ee] (MSC service thread 1-7) JBAS011006: Nenhuma instalação do componente com.teste.IServiçoPrototipo devido à exceção: java.lang.ClassNotFoundException: com.teste.IServiçoPrototipo from [Module "deployment.Prototipo.war:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:196) [jboss-modules.jar:1.2.0.Final-redhat-1]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:444) [jboss-modules.jar:1.2.0.Final-redhat-1]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:432) [jboss-modules.jar:1.2.0.Final-redhat-1]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:399) [jboss-modules.jar:1.2.0.Final-redhat-1]
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:374) [jboss-modules.jar:1.2.0.Final-redhat-1]
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:119) [jboss-modules.jar:1.2.0.Final-redhat-1]
at java.lang.Class.forName0(Native Method) [rt.jar:1.6.0_45]
at java.lang.Class.forName(Class.java:249) [rt.jar:1.6.0_45]
at org.jboss.as.server.deployment.reflect.DeploymentClassIndex.classIndex(DeploymentClassIndex.java:54)
at org.jboss.as.ee.component.deployers.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:78) [jboss-as-ee-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:120)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) [rt.jar:1.6.0_45]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) [rt.jar:1.6.0_45]
at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_45]
15:00:50,404 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-7) MSC000001: Failed to start service jboss.deployment.unit."Prototipo.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."Prototipo.war".INSTALL: JBAS018733: Falha ao proceder com a fase INSTALL do deployment "Prototipo.war"
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:127) [jboss-as-server-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) [rt.jar:1.6.0_45]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) [rt.jar:1.6.0_45]
at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_45]
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: com.teste.IServiçoPrototipo from [Module "deployment.Prototipo.war:main" from Service Module Loader]
at org.jboss.wsf.stack.cxf.metadata.MetadataBuilder.createDDEndpoint(MetadataBuilder.java:239)
at org.jboss.wsf.stack.cxf.metadata.MetadataBuilder.build(MetadataBuilder.java:82)
at org.jboss.wsf.stack.cxf.deployment.aspect.DescriptorDeploymentAspect.generateMetadataFromDeployment(DescriptorDeploymentAspect.java:141)
at org.jboss.wsf.stack.cxf.deployment.aspect.DescriptorDeploymentAspect.start(DescriptorDeploymentAspect.java:75)
at org.jboss.as.webservices.deployers.AspectDeploymentProcessor.deploy(AspectDeploymentProcessor.java:74)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:120) [jboss-as-server-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
... 5 more
Caused by: java.lang.ClassNotFoundException: com.teste.IServiçoPrototipo from [Module "deployment.Prototipo.war:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:196) [jboss-modules.jar:1.2.0.Final-redhat-1]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:444) [jboss-modules.jar:1.2.0.Final-redhat-1]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:432) [jboss-modules.jar:1.2.0.Final-redhat-1]
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:374) [jboss-modules.jar:1.2.0.Final-redhat-1]
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:119) [jboss-modules.jar:1.2.0.Final-redhat-1]
at org.jboss.wsf.stack.cxf.metadata.MetadataBuilder.createDDEndpoint(MetadataBuilder.java:235)
... 10 more
15:00:50,495 INFO [org.jboss.as.server] (ServerService Thread Pool -- 26) JBAS018559: Implantado "Prototipo.war" (runtime-name: "Prototipo.war")
15:00:50,503 INFO [org.jboss.as.controller] (Controller Boot Thread) JBAS014774: Relatório
de status de serviço JBAS014777: Serviços que falham na inicialização: service jboss.deployment.unit."Prototipo.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."Prototipo.war".INSTALL: JBAS018733: Falha ao proceder com a fase INSTALL do deployment "Prototipo.war"
Abraço.