4 Replies Latest reply: Jun 18, 2012 9:39 AM by manish suriya RSS

POJO Endpoint causes NPE at JBossWebMetaDataParser.parse

abhi0123 Newbie

POJO Endpoint deployed with web.xml and jboss-web.xml. When enabled, or attempted to, JBOSS AS 7 fails with NPE. Source code and partial deployable artifact attached. Could not attach the actual deployable because it is 35 Meg but have included my local dependencies. If required, other dependencies could be downloaded by Maven.

 

 

15:16:25,985 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-14) MSC00001: Failed to start service jboss.deployment.unit."jaxws-pojo-endpoint-1.0.war".PARSE: org.jboss.msc.service.StartException in service jboss.deployment.unit."jaxws-pojo-endpoint-1.0.war".PARSE: Failed to process phase PARSE of deployment "jaxws-pojo-endpoint-1.0.war"
          at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
          at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
          at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
          at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [classes.jar:1.6.0_31]
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [classes.jar:1.6.0_31]
          at java.lang.Thread.run(Thread.java:680) [classes.jar:1.6.0_31]
Caused by: java.lang.NullPointerException
          at org.jboss.metadata.parser.jbossweb.JBossWebMetaDataParser.parse(JBossWebMetaDataParser.java:100)
          at org.jboss.as.web.deployment.JBossWebParsingDeploymentProcessor.deploy(JBossWebParsingDeploymentProcessor.java:69)
          at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
          ... 5 more

 

 

TimeServiceSEI.java

@WebService
public interface TimeServiceSEI {

          public Time getCurrentTime();

          public Time getCurrentTimeAfterHttpBasicAuthentication();

          public Time getCurrentTimeAfterDeclarativeRoleBasedAuthorization();

          public Time getCurrentTimeAfterProgrammaticRoleBasedAuthorization();

          public Time getCurrentTimeAfterUserPrincipalAuthentication();

          public Time getCurrentTimeAfterProgrammaticAuthentication();
}

 

 

TimeService.java

@WebService(name = "Time", serviceName = "TimeService", portName = "TimeServicePort", targetNamespace = "http://abhijitsarkar.certification.edu/ocewsd/jaxws/pojo/endpoint", endpointInterface = "edu.certification.abhijitsarkar.ocewsd.jaxws.pojo.endpoint.TimeServiceSEI")
@HandlerChain(file = "handler-chain.xml")
// should be configurable in jboss-web.xml,
// https://issues.jboss.org/browse/JBWS-3487
//@SecurityDomain(value = "other")
//@WebContext(contextRoot = "/jaxws-pojo-endpoint", authMethod = AuthMethod.BASIC, secureWSDLAccess = false, transportGuarantee = TransportGuarantee.NONE, urlPattern = "/TimeService")
public class TimeService implements TimeServiceSEI {

  @WebMethod  
  @Override
          public Time getCurrentTime() {
                    return new Time();
          }

  /* HttpBasicAuthenticationHandler authenticates this request */
  @WebMethod
  @Override
          public Time getCurrentTimeAfterHttpBasicAuthentication() {
                    return getCurrentTime();
          }

  @WebMethod  
  @Override
          public Time getCurrentTimeAfterDeclarativeRoleBasedAuthorization() {
                    return getCurrentTime();
          }
// more methods
}

 

 

web.xml

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0">
  <security-constraint>
  <web-resource-collection>
  <web-resource-name>TimeService</web-resource-name>
  <url-pattern>/TimeService</url-pattern>
  <http-method>POST</http-method>  <!-- GET is used to receive POJOAuthService?wsdl -->
  </web-resource-collection>
  <auth-constraint>
  <role-name>AppUser</role-name>
  </auth-constraint>
  <user-data-constraint>
  <transport-guarantee>NONE</transport-guarantee>
  </user-data-constraint>
  </security-constraint>

  <security-role>
  <role-name>AppUser</role-name>
  </security-role>

  <login-config>
  <auth-method>BASIC</auth-method>
  <realm-name>Pojo Auth Test Realm</realm-name>
  </login-config>
</web-app>

 

 

jboss-web.xml

<jboss-web xmlns="http://www.jboss.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-web_7_0.xsd"
  version="7.0">
  <security-domain>other</security-domain>
  <context-root>/jaxws-pojo-endpoint</context-root>
</jboss>