2014-02-20 4 views
-3

Я пытаюсь вызвать свой сервлет GetAttributeValueServlet с apache tomcat, и эта ошибка была показана. Сервлет находится в CloudWebServerClient.вызов сервлета от Tomcat, метания HTTP-статуса 500 - java.lang.NullPointerException

Severe: Servlet.service() for servlet [servlet.GetAttributeValueServlet] in context with path [/CloudWebServiceClient] threw exception 
AxisFault 
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException 
faultSubcode: 
faultString: java.lang.NullPointerException 
faultActor: 
faultNode: 
faultDetail: 
    {http://xml.apache.org/axis/}hostname 

java.lang.NullPointerException 
    at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222) 
    at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129) 
    at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(Unknown Source) 
    at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227) 
    at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696) 
    at org.apache.axis.Message.getSOAPEnvelope(Message.java:435) 
    at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:796) 
    at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144) 
    at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) 
    at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) 
    at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) 
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165) 
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784) 
    at org.apache.axis.client.Call.invoke(Call.java:2767) 
    at org.apache.axis.client.Call.invoke(Call.java:2443) 
    at org.apache.axis.client.Call.invoke(Call.java:2366) 
    at org.apache.axis.client.Call.invoke(Call.java:1812) 
    at com.client.service.WebServiceProxySoapBindingStub.getAttributeValue(WebServiceProxySoapBindingStub.java:297) 
    at com.client.service.WebServiceProxyProxy.getAttributeValue(WebServiceProxyProxy.java:50) 
    at servlet.GetAttributeValueServlet.doGet(GetAttributeValueServlet.java:48) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

web.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_3_0.xsd" version="3.0"> 
    <display-name>CloudWebServiceServer</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> 

    <servlet> 
    <display-name>GetAttributeValueServlet</display-name> 
    <servlet-name>GetAttributeValueServlet</servlet-name> 
    <servlet-class>com.src.servlet.GetAttributeValueServlet</servlet-class> 
    </servlet> 

    <servlet> 
    <display-name>Apache-Axis Servlet</display-name> 
    <servlet-name>AxisServlet</servlet-name> 
    <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>GetAttributeValueServlet</servlet-name> 
    <url-pattern>/CloudWebServiceClient/WebContent/GetAttributeValueServlet</url-pattern> 
    </servlet-mapping> 

    <servlet-mapping> 
    <servlet-name>AxisServlet</servlet-name> 
    <url-pattern>/servlet/AxisServlet</url-pattern> 
    </servlet-mapping> 

    <servlet-mapping> 
    <servlet-name>AxisServlet</servlet-name> 
    <url-pattern>*.jws</url-pattern> 
    </servlet-mapping> 

    <servlet-mapping> 
    <servlet-name>AxisServlet</servlet-name> 
    <url-pattern>/services/*</url-pattern> 
    </servlet-mapping> 

    <servlet> 
    <display-name>Axis Admin Servlet</display-name> 
    <servlet-name>AdminServlet</servlet-name> 
    <servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class> 
    <load-on-startup>100</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>AdminServlet</servlet-name> 
    <url-pattern>/servlet/AdminServlet</url-pattern> 
    </servlet-mapping> 
    </web-app> 

GetAttributeValueServlet:

package servlet; 

    import java.io.IOException; 
    import java.io.PrintWriter; 

    import javax.servlet.ServletException; 
    import javax.servlet.annotation.WebServlet; 
    import javax.servlet.http.HttpServlet; 
    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse; 

    import com.client.service.WebServiceProxy; 
    import com.client.service.WebServiceProxyProxy; 


    /** 
    * Servlet implementation class GetAttributeValueServlet 
    */ 
    @WebServlet("/GetAttributeValueServlet") 
    public class GetAttributeValueServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public GetAttributeValueServlet() { 
    super(); 
    // TODO Auto-generated constructor stub 
    } 

    /** 
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 

    response.setHeader("Access-Control-Allow-Origin", "*"); 
    response.setContentType("text/xml;charset=utf-8"); 
    String EntityID=request.getParameter("entity_id"); 
    String AttrName=request.getParameter("attrName"); 


    //String Value=request.getParameter("value"); 
    System.out.println(EntityID+AttrName); 

    WebServiceProxy wsp = new WebServiceProxyProxy(); 
    System.out.println("Huuu"); //just to see if it is coming to this point and yes it comes to this point and after that throws exception! 
    String isGet = wsp.getAttributeValue(EntityID, AttrName); 
    System.out.println("Hagfgfg"); //it doesn't shows this value! 
    PrintWriter pw = response.getWriter(); 

     pw.print(isGet);  

    return; 
} 


/** 
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
} 

}

+0

Ошибки в коде сервлета, а не отображение в сети .xml – developerwjk

+0

Можете ли вы просмотреть его, пожалуйста?? ... его действительно срочно ... Я закончил с моим проектом, если вы поможете мне решить эту проблему ... Я скопировал код сервлета – BollyBoy

ответ

0

я решил его .... Проблема была в параметре attrName который был Null, и это было из-за вызов неправильной функции;) спасибо в любом случае

0

Перед использованием значений вы тянете из request.getParameter() вы должны проверить их, чтобы увидеть, если они являются нулевыми и делают что-то, если они есть.

String entityID = request.getParameter("entity_id"); 
if(entityID==null) 
{ 
    entityID = ""; 
    //or maybe print a message to user "Entity ID is required field" and return; 
} 

Или вы можете убедиться, что они не равно нулю, как это:

String entityID = "" + request.getParameter("entity_id"); 

Это означало бы, если бы то, что выходит из request.getParameter() был нулевым, теперь это будет строковое значение «null», а не null.

+0

thanx для ответ, но entity_id ist не null .... Атрибут, который я вызываю, имеет идентификатор, а это не null ... – BollyBoy

+0

Вы принимаете это. Но это не всегда так, поэтому вы не должны этого допускать. Если кто-то отправляется на ваш сервлет без фактического прохождения вашей html-формы, параметр WILL BE null. – developerwjk

+0

Когда я вызываю сервлет с apache Tomcat, он дает entity_id и attributename, но после этого генерирует исключение ... с isGet = null ..... – BollyBoy