JSON output of a JAX-WS webservice?

后端 未结 2 1701
抹茶落季
抹茶落季 2020-12-18 09:30

Is it possible that a jax-ws soap-webservice can output json format instead of xml?

@Component
@WebServic         


        
相关标签:
2条回答
  • 2020-12-18 10:01

    Apparently it's possible by following the instructions indicated at https://jax-ws-commons.java.net/json/

    Summing up:

    @BindingType(JSONBindingID.JSON_BINDING)
    public class MyService {
    
        public Book get(@WebParam(name="id") int id) {
            Book b = new Book();
            b.id = id;
            return b;
        }
    
        public static final class Book {
            public int id = 1;
            public String title = "Java";
        }
    }
    

    You just need jaxws-json.jar in your WEB-INF/lib for this to work.

    I hope it helps!

    0 讨论(0)
  • 2020-12-18 10:10

    This is late. I recently returned to programming in Java, but for those who will be visiting this page in the future. The example in the JAXWS metro documents works only in javascript. I used the following together with JSONObject:

    @WebServiceProvider
    @ServiceMode(value = Service.Mode.MESSAGE)
    @BindingType(value=HTTPBinding.HTTP_BINDING)
    

    then implement Provider(DataSource), as in example:

    public class clazz implements Provider<DataSource>
    { ...
    
        @Override
        public DataSource invoke(DataSource arg)
        { 
            ...
            String emsg = "Request Parameter Error.";
            String sret = create_error_response(emsg);
    
            return getDataSource(sret);
        }
    }
    
    private DataSource getDataSource(String sret)
    {
        ByteArrayDataSource ds = new ByteArrayDataSource(sret.getBytes(), "application/json");
        return ds;
    }
    
    public String create_error_response(String msg)
    {
        JSONObject json = new JSONObject();
        json.put("success", new Boolean(false));
        json.put("message", msg);
        return json.toString();
    }
    
    0 讨论(0)
提交回复
热议问题