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