[英]apache camel cxf soap
我正在使用apache camel cxf開發Web服務(肥皂),遇到此錯誤。
java.lang.IllegalArgumentException:部分{ http://blueprint.camel.ngt.tn/ }返回的類型應為[Ltn.ngt.camel.blueprint.WB_subscriptions;而不是org的tn.ngt.camel.blueprint.WB_subscriptions org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:220)的.apache.cxf.jaxb.io.DataWriterImpl.java:292 org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)的org.apache.cxf.wsdl.interceptors.BareOutInterceptor.handleMessage(BareOutInterceptor.java:69)的.writeParts(AbstractOutDatabindingInterceptor.java:122) org.apache.cxf.phase.PhaseInterceptorChain(PhaseInterceptorChain.java:307)上的org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:83)在org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) PhaseInterceptorChain.java:277)位於org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObs erver.java:78),位於org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:251),位於org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:261), .apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:70)在org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1088)在org.eclipse.jetty.server.handler org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)的.ContextHandler.doScope(ContextHandler.java:1024)org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java)的。 :193),位於org.eclipse.jetty的org.eclipse.jetty.server.Server.Server.handleAsync(Server.java:410)的org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)。 org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982)處的server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:519)在或 g.eclipse.jetty.server.AbstractHttpConnection $ RequestHandler.content(AbstractHttpConnection.java:1043)位於org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)位於org.eclipse.jetty.http.HttpParser。 org.org.eclipse.jetty.server上的parseAvailable(HttpParser.java:240).org.org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)上的syncHttpConnection.handle(AsyncHttpConnection.java:82) org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)上的.eclipse.jetty.io.nio.SelectChannelEndPoint $ 1.run(SelectChannelEndPoint.java:53)在org.eclipse.jetty.util上。 java.lang.Thread.run上的thread.QueuedThreadPool $ 3.run(QueuedThreadPool.java:543)(未知源)
有誰可以幫助我解決這個問題,這是我的源代碼
藍圖
<cxf:cxfEndpoint address="http://localhost:9191/cxf/Subsriptions" id="claimEndpoint" serviceClass="tn.ngt.camel.blueprint.WbSubscriptionService"/>
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route id="GetWb_Subscription">
<from uri="cxf:bean:claimEndpoint"/>
<!-- <from uri="timer:foo?period=10000"/>-->
<to uri="sql:select * from WB_SUBSCRIPTIONS?dataSource=dataSource"/>
<to uri="bean:tn.ngt.camel.blueprint.Transformer?method=ToList(Exchange)"/>
<to uri="bean:tn.ngt.camel.blueprint.Transformer?method=getSubscriptions"/>
<log message="The message contains ${body}"/>
</route>
WbSubscriptionService
public interface WbSubscriptionService {
public List<WB_subscriptions> getSubscriptions();
}
變壓器
public class Transformer {
public static List<WB_subscriptions> subscription= new ArrayList<WB_subscriptions>();
@SuppressWarnings("unchecked")
public List<WB_subscriptions> ToList(Exchange exchange) throws NumberFormatException, ParseException{
List<?> messages= exchange.getIn().getBody(List.class);
List<WB_subscriptions>LstWb_Sub= new ArrayList<WB_subscriptions>();
for(int i=0;i<messages.size();i++){
Map<String,Object> row = (Map<String,Object>) messages.get(i);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
WB_subscriptions wb= new WB_subscriptions( Integer.parseInt(row.get("CUST_ACCOUNT").toString()),
Integer.parseInt(row.get("PACKAGE_ID").toString()),Integer.parseInt(row.get("CUST_MOBILE").toString()) , formatter.parse(row.get("DATE_CREATION").toString()));
System.out.println(wb.getCust_mobile());
LstWb_Sub.add(wb);
}
subscription=LstWb_Sub;
System.out.println("List 1 "+subscription);
return LstWb_Sub;
}
public List<WB_subscriptions> getSubscriptions() throws Exception{
System.out.println("bonjour "+subscription);
return subscription;
}
提前致謝
錯誤消息只是說返回類型必須是WB_subscriptions
的集合, WB_subscriptions
不是單個WB_subscriptions
。
您可以閱讀錯誤消息的第一部分,如下所示:
[
=> ...的數組 L...;
=>在L
和;
之間 是完全分類的類別名稱 tn.ngt.camel.blueprint.WB_subscriptions
=>您的班級名稱 但是,從Web服務返回Java集合時會有一些問題(例如this )。
因此,嘗試返回WB_subscriptions
數組或將List
包裹在Bean中,然后返回包含該列表的單個Bean。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.