资源列表没有使用XML格式在Jersey中显示

时间:2017-09-18 06:37:40

标签: java jersey

我正在尝试创建一个小程序,它将在网络上以xml格式显示外星人列表。

我有3个文件:

  1. alienRepository class-演示数据库

  2. Alien class

  3. alienResource class

  4. 这就是我输入的内容:

    http://localhost:8085/Rest/webapi/aliens

    我在浏览器中收到以下错误:

      

    HTTP状态500 - 内部服务器错误

         

    服务器遇到内部错误,导致无法完成此请求。

    我没有在浏览器中看到该列表,但在控制台中我看到了打印输出(" getAlien称为....."); 我做错了什么?

    <?php
    $host = '<your Azure linux vm host>';
    $port = 22; // First enable the 22 port for Azure Linux VM
    $user='<ssh user>';
    $passwd='<ssh password>';
    $session=ssh2_connect($host, $port);
    if($session)
        echo "connect successfully.\n";
    if(ssh2_auth_password($session, $user, $passwd)) {
        echo $user." login OK.\n";
        $stream=ssh2_exec($session, "pwd");
        stream_set_blocking($stream, true); 
        if ($stream === FALSE) die("pwd failed");
            echo 'pwd: '.stream_get_contents($stream).'<br/>';
    }
    ?>
    
    public class AlienRepository {
        List <Alien> aliens;
        public AlienRepository() {
            aliens = new ArrayList<>();
    
            Alien a1 = new Alien();
            a1.setName("Ohad2");
            a1.setPoints(60);
            a1.setId(1);
    
            Alien a2 = new Alien();
            a2.setName("Ohad");
            a2.setPoints(80);
            a2.setId(2);
    
            aliens.add(a1);
            aliens.add(a2);
    
    
        }
    
        public List<Alien> getAliens(){
            return aliens;
        }
    
        public Alien getAlien(int id) {
    
            for (Alien a: aliens)
            {
                if(a.getId() == id)
                    return a;
            }
            return null;
    
        }
    
    }
    
    @XmlRootElement
    public class Alien {
    
        private String name;
        private int points;
        public int id;
    
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getPoints() {
            return points;
        }
        public void setPoints(int points) {
            this.points = points;
        } 
    }
    

    这是servlet映射:

    @Path("aliens")
    public class AlienResource {
        AlienRepository repo = new AlienRepository();
    
        @GET
        @Produces(MediaType.APPLICATION_XML)
        public List<Alien> getAlien() {
            System.out.println("getAlien called.....");
            return repo.getAliens();
        }
    }
    

0 个答案:

没有答案