Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在restfulcxf中未找到响应的消息正文编写器_Java_Rest_Weblogic - Fatal编程技术网

Java 在restfulcxf中未找到响应的消息正文编写器

Java 在restfulcxf中未找到响应的消息正文编写器,java,rest,weblogic,Java,Rest,Weblogic,我有cxf宁静的春天: rest-context.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cxf="http://cxf.apache.org/core"

我有cxf宁静的春天:

rest-context.xml

   <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cxf="http://cxf.apache.org/core"
        xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:jaxrs="http://cxf.apache.org/jaxrs"
        xsi:schemaLocation="
                http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
                http://www.springframework.org/schema/beans 
                http://www.springframework.org/schema/beans/spring-beans.xsd
                http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
                http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">

        <import resource="classpath:META-INF/cxf/cxf.xml" />
        <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

        <bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" />


        <cxf:bus>
            <cxf:features>
                <cxf:logging />
            </cxf:features>
        </cxf:bus>
        <bean id="userManager" class="com.restWS.impl.UserManager" />
        <jaxrs:server id="userManagerREST" address="/rest/UserManager">
            <jaxrs:serviceBeans>
                <ref bean="userManager" />
            </jaxrs:serviceBeans>
            <jaxrs:providers>
                <ref bean='jsonProvider' />
            </jaxrs:providers>
        </jaxrs:server>
    </beans>
IUserManager.java

package com.restWS.impl;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

import com.model.Personel;
import com.restWS.IUserManager;

@Path("/personelService")
@Consumes("application/json")
@Produces("text/plain")
public class UserManager implements IUserManager {
    public UserManager() {
        System.out.println("horaaaaaaaaaaaaaaaaaaaa the object is initioalized nowwwwwwwwwwwwwwwwwwww");
    }

    @GET
    @Path("/hello/{personCode}")
    public Personel getPersonelByPersonCode(@PathParam("personCode") String personCode) {
        Personel personel = new Personel(personCode);
        return personel;
    }
}
package com.restWS;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

import com.model.Personel;

@Path("/personelService")
@Consumes("application/json")
@Produces("text/plain")
public interface IUserManager {
    @GET
    @Path("/hello")
    public Personel getPersonelByPersonCode(String personCode);
}
personel.java

package com.model;

import java.io.Serializable;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;

import org.apache.cxf.aegis.type.java5.XmlElement;
import org.springframework.beans.factory.annotation.Autowired;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Personel")
public class Personel implements Serializable {
    private String nationalCode;
    private String name;
    private String lastName;
    private String fatherName;

    public Personel(String personCode) {
        this.name = "reza";
        this.lastName = "ramezani matin";
        this.fatherName = "ali";
        this.nationalCode = "3980020827";
    }

    public String getNationalCode() {
        return nationalCode;
    }

    public void setNationalCode(String nationalCode) {
        this.nationalCode = nationalCode;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getFatherName() {
        return fatherName;
    }

    public void setFatherName(String fatherName) {
        this.fatherName = fatherName;
    }

}
上述项目已成功部署在weblogic 12.1.1中。 当firefox发送请求为“”的请求时,有效负载:在控制台中未找到响应类Personel的消息正文编写器

Content-Type: text/plain
Headers: {Date=[Wed, 22 Apr 2015 06:12:26 GMT]}
Payload: No message body writer has been found for response class Personel.

您需要告诉服务器这个webmethod将生成一个xml输出。您可以通过添加这一行来实现这一点,尝试删除类级别的products标记

 @GET
 @Path("/hello/{personCode}")
 @Produces("application/xml") //added this line ,you can declare anything json/xml
 public Personel getPersonelByPersonCode(@PathParam("personCode") String personCode) {
     Personel personel = new Personel(personCode);
     return personel;
 }
您还需要使用如下xml标记对Personal类进行注释

@XmlElement(name="nationalCode")
private String nationalCode;

@XmlElement(name="name")
private String name;

@XmlElement(name="lastName")
private String lastName;

@XmlElement(name="fatherName")
private String fatherName;
注释可以跳过,但它使您能够自定义标记(例如,“firstName”可以用作“fName”标记)

希望这有帮助

祝你好运

@XmlElement(name="nationalCode")
private String nationalCode;

@XmlElement(name="name")
private String name;

@XmlElement(name="lastName")
private String lastName;

@XmlElement(name="fatherName")
private String fatherName;