当前位置: 首页 > 知识库问答 >
问题:

Java调用web服务问题-javax.servlet.servletException:Java.lang.NullPointerException

刘向阳
2023-03-14

当我调用服务时,我会得到一个错误。我尝试了所有我能找到的解决办法

错误全文:

@GET
@Path("/getAnalyzedMatches")
@Produces(MediaType.APPLICATION_XML)
public static AnalyzeResponseModel getAnalyzedMatches() throws ClassNotFoundException, SQLException {
    AnalyzeResponseModel response = new AnalyzeResponseModel();
    List<AnalyseResultModel> analyzedMatches = SoveMatchesUtil.getAnalyzedMatches();
    /* try to set object */
    List<Object> objectList = new ArrayList<>();
    for (AnalyseResultModel item : analyzedMatches) {
        objectList.add(item);
    }
    response.setList(objectList);
    return response;
}
package com.sove.model;

import java.util.List;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "list")
public class AnalyzeResponseModel {
    List<Object> list;

    public AnalyzeResponseModel() {
    }

    public List<Object> getList() {
        return list;
    }

    @XmlAttribute
    public void setList(List<Object> list) {
        this.list = list;
    }

}
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>sove</groupId>
<artifactId>sove</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.0.0</version>
            <configuration>
                <warSourceDirectory>WebContent</warSourceDirectory>
            </configuration>
        </plugin>
    </plugins>
</build>
<dependencies>

    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>2.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>jaxrs-api</artifactId>
        <version>3.0.12.Final</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.bundles</groupId>
        <artifactId>jaxrs-ri</artifactId>
        <version>2.17</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.lucee/postgresql -->
    <dependency>
        <groupId>org.lucee</groupId>
        <artifactId>postgresql</artifactId>
        <version>8.3-606.jdbc4</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/log4j/log4j -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

</dependencies>
<?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"  
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
   id = "WebApp_ID" version = "3.0"> 
   <display-name>sove</display-name> 
   <servlet> 
      <servlet-name>Jersey RESTful Application</servlet-name> 
      <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
      <init-param> 
         <param-name>jersey.config.server.provider.packages</param-name> 
         <param-value>com.sove.service</param-value> 
      </init-param> 
   </servlet> 
   <servlet-mapping> 
      <servlet-name>Jersey RESTful Application</servlet-name> 
      <url-pattern>/*</url-pattern> 
   </servlet-mapping>   
</web-app>

共有1个答案

伊富
2023-03-14

通过在响应模型(AnalyseResultModel)中将公共属性变为私有属性来解决该问题。

 类似资料:
  • 我最近创建了一个Azure应用程序服务,并使用winscp工具我复制了我的war文件到www root文件夹,并删除了现有的html文件,但我仍然可以看到默认网站我的网络应用程序没有反映。

  • 问题内容: 我在我们的内部网络上有一个简单的Web服务。我使用SOAPUI进行了一些测试,从WSDL生成了服务类,并编写了一些Java代码来访问服务。正如我能够创建服务代理类和进行调用一样,一切都按预期进行。很简单的东西。唯一的障碍是让Java信任来自提供Web服务的计算机的证书。那不是技术问题,而是我缺乏基于SSL的Web服务的经验。现在到我的问题。我编写了一个简单的EJB服务并将其部署到JBo

  • 我在Scala上使用Play 2.5,我创建了一个类,可以多次调用外部web服务。 外部Web服务在某些条件下被调用并得到ok或nok的简单响应。如果可以,那么我应该更新内部对象状态,如果可以,我现在什么也不做。 这是我的类,它将String的列表作为参数,并返回要在控制器中处理的对象的Future列表。 是列表类型的列表,但我希望它只是一个简单的响应列表。 1)如何简化和纠正我的代码以获得响应列

  • 我对webservice世界相对来说是个新手,我的研究似乎让我困惑而不是启发,我的问题是我得到了一个库(jar),我必须用一些webservice功能来扩展它。 这个库将共享给其他开发人员,在jar中的类中,将有一个调用webservice的方法的类(该方法实质上设置类的属性,执行一些业务逻辑,如将对象存储在db中等,并将对象与这些修改一起发回)。我希望对这个服务的调用尽可能简单,希望尽可能简单,

  • 我有一个Java的Play 2.1控制器,需要调用一个外部的webservice来获取一些数据。然后有了这个数据结果,我必须用n次调用调用另一个web服务,对应于第一个web service调用的n个结果。 对于性能问题,我想使用 promise 在单独的线程中进行 n 次调用。 所以我会有一个这样的循环: 如何使用异步API同步n个promise,然后在一个响应(所有结果的列表)中减少结果,然后

  • 我的应用程序目前正在使用Spring的和注释进行事务处理。 我有一个在单个事务上调用Web服务的方法,我设计它是为了让Web服务的异常将回滚事务中的所有数据库更改。 我的问题:如何刷新在调用web服务之前所做的数据库更改? 非常感谢 我的Spring配置: