jax-ws null pointer exception

Buenas tardes, un amigo q me recomendo este foro me dijo que buscara antes de preguntar, ya busque y no encontre asi q les cuento mi problema, he revisado en este foro y aprendi a hacer WS sencillo:
la declaracion de la interfaz

@WebService
public interface ScheduleTask {
       
         void GenerarPostPago();
         
}

implementacion de la interfaz:

@WebService(endpointInterface = "com.tigo.sv.ScheduleTask")
@Produces("application/json")
public class ScheduleTaskImpl implements ScheduleTask {                        
        @GET
        @Path("/{a}")                                  
                        @Override                      
                        public void GenerarPostPago() {        
                                log.info("Iniciando postpago");        
                                FtpPostPago ftppostpago=new FtpPostPago();
                                ftppostpago.generarArchivoPostPago();
                                log.info("Ejecucion finalizada");                              
               
                        }
               
                }

mi problema es q al trata de consumir el WS desde weblogic en consola me aparece el log "iniciando postpago" pero al parecer no hace el llamado al metodo generarArchivoPostPago();(en consola no me da erores)

esto es lo q le agregue al applicationContext.xml:

<bean id= "scheduleTask" class="com.tigo.sv.ScheduleTaskImpl"/>
<jaxws:endpoint
                        id="Task"
                        implementor="#scheduleTask"
                        address="/wsschedule">
                        </jaxws:endpoint>
<jaxrs:server id="scheduleService" address="/restTask">
                    <jaxrs:serviceBeans>
                      <ref bean="scheduleTask" />
                    </jaxrs:serviceBeans>
                  </jaxrs:server>
 

esto es lo q le agregue al web.xml:

<listener>
    <listener-class>
                 org.springframework.web.context.ContextLoaderListener
              </listener-class>
  </listener>
 
  <servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>  
    <load-on-startup>1</load-on-startup>
  </servlet>
 
  <servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>

llevo una semana quebrandome la cabeza no le encuentro solucion, muchas gracias x el tiempo d leer esto =)

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Y entonces donde te sale:

Y entonces donde te sale: jax-ws null pointer exception? Supongo que tampoco te sale el log de "Ejecución finalizada". Lo que podrías hacer es quitar la invocación a lo del ftp, ver que te salgan los dos logs bien ( que deben de salir sin problemas porque ya te aparece el primero ) y luego de forma aislada llamar al método que genera el archivo de postpago. Si en tú máquina corre bien esta clase, intenta correrla en el servidor donde está instalado. Lo más probable es que tengas una configuración diferente entre el servidor donde corre y donde lo estás probando, permisos, archivos, rutas ( a veces las dejan en código duro ), bibliotecas etc. O quizá esa clase ni siquiera funciona, pero no te vas a dar cuenta hasta que la aisles.

Espero que esta información te sirva

null pointer en weblogic log

probe como me dijist y la quite la llamada y sale esto:

INFO [[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'] (ScheduleTaskImpl.java:29) - Iniciando postpago
INFO [[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'] (ScheduleTaskImpl.java:32) - Ejecucion finalizada

la clase aislada funciona correctamente ya estaba testeada. el problema es que en WS no realiza la llamada

<S:Body>
    <S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope">
      <faultcode>S:Server</faultcode>
      <faultstring>java.lang.NullPointerException</faultstring>
      <detail>
        <ns2:exception xmlns:ns2="http://jax-ws.dev.java.net/" class="java.lang.NullPointerException" note="To disable this feature, set com.sun.xml.ws.fault.SOAPFaultBuilder.disableCaptureStackTrace system property to false">

este es el log del cliente de weblogic
el problema es q no hac el llamado a la clase entonces quiero saber si es necesario agregarle alguna configuracion extra al applicationContext.xml para q haga llamados a metodos d otras clases?
muchas gracias x responder =)

O sea que si lo está

O sea que si lo está llamando.

No, no tienes que hacer nada extraño. Por ejemplo intenta correr la clase directamente en el servidor ( dices que ya esta testeada, pero será en la misma configuración? ) Otra forma de cerciorarse es llamando un método inocuo, por ejemplo:

log.info("Iniciando postpago");    
FtpPostPago ftppostpago=new FtpPostPago();
log.info(String.format("Ejecucion finalizada %x", ftppostpago.hashCode()));

Si sigues viendo el log, entonces su problema está en el método directamente.

Por último, ese Npe debe de traer alguna información extra, probablemente ahí encuentres la causa.

Saludos

Imagen de paranoid_android

Pudiera estar relacionado

Te aporto lo siguiente:
1. Revisar si la especificación de Web logic JEE (¿5 o 6?) que usas soporta el tipo de web services que se está implementado.
2. ¿Usaste alguna herramienta para generarlos o solo codificaste? Hace unos días estuve haciendo unas pruebitas con JAXB, de reojo al buscar la solución encontré problemas de nulos en web services JAX-WS, podría ser que te falten librerías o pasos en la generación de los web services.

tenes toda la razon

Tenes toda la razon si realiza el llamado y el problema esta en el metodo.
El inconveniente esta en todos los llamados con spring que hago mediante el id de los bean definidos en el applicationContext.xml.
Si los hago manual declarando el objeto FtpPostPago ftppostpago=new FtpPostPago(); no da problema.
El llamado original q hacia era este. El Npe que da es xq al parecer el objeto ftppostpago no esta definido

@Autowired
        FtpPostPago ftppostago;
                                       
                        @Override                      
                        public void GenerarPostPago() {        
                                Logger log = Logger.getLogger(ScheduleTask.class);     
                                log.info("Iniciando postpago");        
                                ftppostpago.generarArchivoPostPago();
                                log.info("Ejecucion finalizada");                              
               
                        }

Dentro del metodo generarArchivoPostPago() hay una llamada a un metodo d otra clase mediante id del bean y tampoco lo realiza

@Autowired
        PostPagoDao postpagoDao;       

 public void generarArchivoPostPago(){
                        List<PostPago> list=new ArrayList<PostPago>();                 
                        list =postpagoDao.findByAll();         
 }

A medida voy quitando llamados q hago mediante los bean del contenedor y reemplazandolos por instancias d las clases(como este FtpPostPago ftppostpago=new FtpPostPago() ) va funcionando. =S pero no deberia ser asi..No se si yo estare haciendo mal las llamadas con spring o que sera?
gracias x tomarse el tiempo de responderme

<bean id="ftppostpago" class="com.tigo.sv.pagos.dao.FtpPostPago">
 </bean>
       
 <bean id="postpagoDao" class="com.tigo.sv.pagos.dao.PostPagoDaoImpl">
                <constructor-arg ref="dataSource" index="0"/>
   </bean>  
Imagen de neko069

Mmm..

Yo te coloco un tema que tiene un rato, léelo completo para que le halles sentido, viene un ejemplo sencillo de cómo hacer un WS y unas ligas que te pueden ser útiles.

Aquí dejo la liga.

O sea que el código que

O sea que el código que pusiste en el ejemplo no correspondía al que ejecutabas? ¬¬ Noo pues más difícil así.

Bueno pues al menos ya estas encaminado a resolver el problema una vez que sabes donde está.

Suerte!

Si era el codigo que

Si era el codigo que ejecutaba pero me di cuenta que el problema son las llamadas con el spring si las hago manuales no da problema pero gracias a todos x la ayuda aun nose como llamar los metodos mediante los bean eso es lo q me arruina el WS

En tu post pusiste... Ahh

En tu post pusiste...

Ahh lo bueno es que ya sabes que es...

Si gracias que ya me ayudast

Si gracias que ya me ayudast a descubrir que es lo q esta dando fallando.. no se como resolver que las llamadas en la forma d spring no den problema en el WS

es q t estaba mostrando que

es q t estaba mostrando que uno funciona y el otro no, pero el q necesito utilizar es el q no funciona :S

gracias.. 1. Si soporta el WS

gracias.. 1. Si soporta el WS weblogic 11gr
2.Si los codifique yo es q no es muy complicado
Ya me di cuenta que aunque yo levante el contexto de la aplicacion el WS no lo hace. Entonces todos los beans declarados no son creados x eso me da los nullpointer cada vez q ve una llamada

Imagen de paranoid_android

Verificar que funcione el @autowired

Verificando en el applicationContext necesitas tener

    <context:annotation-config /> <!-- Dice a Spring que usas anotaciones-->
    <bean class = "org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" /> <!-- Prepara las anotaciones-->
       
    <context:component-scan base-package="com.paqueteBase" /> <!--  Necesitas una configuracion como esta por cada paquete base -->

Para que spring complete las dependencias.

bueno gracias a todos por la

bueno gracias a todos por la ayuda.. he encontrado que es un bug del spring asi q mejor tratare de implementar otra solucion
https://jira.springsource.org/browse/SPR-5652