Java 无法在响应中附加XML元素

Java 无法在响应中附加XML元素,java,rest,jaxb,Java,Rest,Jaxb,我已经创建了一个webservices,它接受XML数据,在服务器上进行一些计算后,它添加了几个XML字段,并将输出返回给客户端。我将JAX-RS用于RESTfulWebService和JAXB 现在的问题是,当响应被发送回客户端时,它不包括新升级的元素 下面是代码的详细信息 表示XML的类(使用JAXB) 我创建了以下市场信息对象,并尝试在代码之间设置列表的值 private IBMarketInfo m_marketInfo = new IBMarketInfo(); m_marketI

我已经创建了一个webservices,它接受XML数据,在服务器上进行一些计算后,它添加了几个XML字段,并将输出返回给客户端。我将JAX-RS用于RESTfulWebService和JAXB

现在的问题是,当响应被发送回客户端时,它不包括新升级的元素

下面是代码的详细信息

表示XML的类(使用JAXB)

我创建了以下市场信息对象,并尝试在代码之间设置列表的值

private IBMarketInfo m_marketInfo  = new IBMarketInfo();
 m_marketInfo.setTicker(msg);
XML请求

 public class MainAccess {

   private IBMarketInfo m_marketInfo  = new IBMarketInfo(); //declaring in class

    // as an when data comes these following functions will add data into List
    public void tickSize( int tickerId, int field, int size) {

        String msg = EWrapperMsgGenerator.tickSize( tickerId, field, size);
        m_marketInfo.setTicker(msg); // setting m_Ticker 

    }
    public void tickPrice( int tickerId, int field, double price, int canAutoExecute) {

        String msg = EWrapperMsgGenerator.tickPrice( tickerId, field, price, canAutoExecute);

        m_marketInfo.setTicker(msg); //setting m_Ticker 

    }
}
问题是,我得到的是相同的XML,而没有附加mktdata

<?xml version="1.0" encoding="UTF-8"?>
<market>
    <contract>
        <symbol>IBM</symbol>
        <sectype>STK</sectype>
        <exchange>SMART</exchange>
        <currency>USD</currency>    
    </contract> 
        <tickerId>1</tickerId>
    <tickList>1212,12121</tickList>
    <snapshot>false</snapshot>
<ticker-data></ticker-data>
</market>

国际商用机器公司
STK
聪明的
美元
1.
1212,12121
假的

您的问题出现在以下代码中。MainAccess创建了一个IBMaretInfo,但您返回的是未经修改传入的IBMarketInfo

public JAXBElement<IBMarketInfo>getMarketData(JAXBElement<IBMarketInfo> info){

    MainAccess ma = new MainAccess(); // MainAccess Will pull the data from external server
    IBMarketInfo market = info.getValue(); 

   ma.onRequestData(market.getTickerId(),market.getContract(),market.getGenericTickList(),
   market.getSnapShot()); // set the user given input from xml 

  return info;
}
我得到以下输出:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<market>
    <tickerId>0</tickerId>
    <snapshot>false</snapshot>
    <mktdata>FOO</mktdata>
    <mktdata>BAR</mktdata>
</market>

0
假的
福
酒吧

您的问题出现在以下代码中。MainAccess创建了一个IBMaretInfo,但您返回的是未经修改传入的IBMarketInfo

public JAXBElement<IBMarketInfo>getMarketData(JAXBElement<IBMarketInfo> info){

    MainAccess ma = new MainAccess(); // MainAccess Will pull the data from external server
    IBMarketInfo market = info.getValue(); 

   ma.onRequestData(market.getTickerId(),market.getContract(),market.getGenericTickList(),
   market.getSnapShot()); // set the user given input from xml 

  return info;
}
我得到以下输出:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<market>
    <tickerId>0</tickerId>
    <snapshot>false</snapshot>
    <mktdata>FOO</mktdata>
    <mktdata>BAR</mktdata>
</market>

0
假的
福
酒吧

您确定已填充m_Ticker变量吗?您还尝试过在JAX-RS之外运行一个独立的示例来测试映射吗?是的,我确信m_Ticker使用m_marketInfo.setTicker(msg);最终使用m_Ticker的代码行。很抱歉,我没有回答你的第二个问题。在我下面的回答中,我在一个独立的示例中尝试了你的模型,并且一切都按预期进行。你确定填充了m_Ticker变量吗?您还尝试过在JAX-RS之外运行一个独立的示例来测试映射吗?是的,我确信m_Ticker使用m_marketInfo.setTicker(msg);最终使用m_Ticker的代码行。很抱歉,我没有回答你的第二个问题。在下面的回答中,我在一个独立的示例中尝试了你的模型,一切都按照预期进行。我将如何修改它,我的意思是如何反映信息的变化?@Hunt-这取决于,你想让MainAccess创建一个新的IBMarketInfo吗?如果是这样,则返回一个JAXBElement,它从MainAcess包装IBMarketInfo。如果您想让MainAccess对传入的IBMarketInfo执行操作,可以将MainAccess设置为无状态,并将IBMarketInfo作为参数传递。我得到了第一种方法,但在第二种方法中,您的意思是说我在webservice请求函数中作为参数接收的输入,我将IBMarketInfo信息作为参数传递给MainAccess并对其进行修改?我将如何修改它,我的意思是如何反映信息中的更改?@Hunt-视情况而定,是否希望MainAccess创建新的IBMarketInfo?如果是这样,则返回一个JAXBElement,它从MainAcess包装IBMarketInfo。如果您想让MainAccess对传入的IBMarketInfo执行操作,可以将MainAccess设置为无状态,并将IBMarketInfo作为参数传递。我得到了第一种方法,但在第二种方法中,您的意思是说我在webservice请求函数中作为参数接收的输入,我将IBMarketInfo作为参数传递给MainAccess并对其进行修改?
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<market>
    <tickerId>0</tickerId>
    <snapshot>false</snapshot>
    <mktdata>FOO</mktdata>
    <mktdata>BAR</mktdata>
</market>