2014-02-20 68 views
-3

我想從apache tomcat調用我的servlet GetAttributeValueServlet,並且顯示此錯誤。 該Servlet在CloudWebServerClient來自Tomcat的Servlet調用拋出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

的錯誤是在servlet的代碼,而不是在網絡映射.xml – developerwjk

+0

你可以看看它嗎??...它真的很緊迫...我已經完成了我的項目,如果你會幫我解決這個問題...我已經複製Servlet代碼 – BollyBoy

回答

0

我解決它....但問題是在參數attrName這是零,這是因爲錯誤的函數調用;)感謝名單反正

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不爲空....我打電話的屬性有一個ID,這不是空... – BollyBoy

+0

你承擔這一點。但情況並非總是如此,這就是爲什麼你不應該假設它。如果有人在沒有經過html表單的情況下訪問您的servlet,則參數將爲空。 – developerwjk

+0

當我使用apache Tomcat調用servlet時,它給出了entity_id和attributename,但之後拋出一個異常...並且isGet = null ..... – BollyBoy

相關問題