| 
					
				 | 
			
			
				@ -1,43 +1,118 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package camel.api7.processor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.camel.Exchange; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.camel.Processor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.stereotype.Component; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.xml.soap.SOAPMessage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.xml.namespace.QName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.xml.soap.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Component("toWsProcessor") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class ToWsProcessor { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public SOAPMessage processSOAP(Exchange exchange) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // Since the Camel-CXF endpoint uses a list to store the parameters 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // and bean component uses the bodyAs expression to get the value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // we'll need to deal with the parameters ourself 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List list = exchange.getIn().getBody(List.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (list == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            System.out.println("Incoming null message detected..."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return createDefaultSoapMessage("null"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        SOAPMessage soapMessage = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (list.isEmpty()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                soapMessage = (SOAPMessage) list.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SOAPPart sp = soapMessage.getSOAPPart(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SOAPEnvelope se = sp.getEnvelope(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SOAPBody sb = se.getBody(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String requestText = sb.getFirstChild().getNextSibling().getTextContent(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            System.out.println(requestText); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return createDefaultSoapMessage(requestText); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return createDefaultSoapMessage(e.getClass().getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Component 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class ToWsProcessor implements Processor { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void process(final Exchange exchange) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        SOAPMessage soapMessage = (SOAPMessage)exchange.getIn().getBody(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public SOAPMessage test(Exchange exchange) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        String wsdl = "http://127.0.0.1:8001/esb/ws?wsdl"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        List soapMessage =  exchange.getIn().getBody(List.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        if (soapMessage == null ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            System.out.println("Incoming null message detected..."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            return createDefaultSoapMessage("null"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            String requestText = requestWs(exchange, wsdl, "test"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return createDefaultSoapMessage(exchange.getIn().getBody().toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return createDefaultSoapMessage(e.getClass().getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public SOAPMessage plus(Exchange exchange) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String wsdl = "http://127.0.0.1:8001/esb/ws?wsdl"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        SOAPMessage soapMessage = (SOAPMessage) exchange.getIn().getBody(List.class).get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (soapMessage == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            System.out.println("Incoming null message detected..."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return createDefaultSoapMessage("null"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String requestText = requestWs(exchange, wsdl, "plus"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return createDefaultSoapMessage(requestText); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return createDefaultSoapMessage(e.getClass().getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void requestWs(Exchange exchange) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JaxWsDynamicClientFactory dcf =JaxWsDynamicClientFactory.newInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        org.apache.cxf.endpoint.Client client =dcf.createClient("http://127.0.0.1:2222/soap/ws?wsdl"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 请求ws 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param exchange 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param method 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public String requestWs(Exchange exchange, String wsdl, String method) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        org.apache.cxf.endpoint.Client client = dcf.createClient(wsdl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //getUser 为接口中定义的方法名称  张三为传递的参数   返回一个Object数组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Object[] objects=client.invoke("test"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Object[] objects = client.invoke(method); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //输出调用结果 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        System.out.println("*****"+objects[0].toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        SOAPMessage soapMessage = MessageFactory.newInstance().createMessage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        SOAPBody body = soapMessage.getSOAPPart().getEnvelope().getBody(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        QName payloadName = new QName("http://processor.api7.camel/", "esbWService", "test"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        SOAPBodyElement payload = body.addBodyElement(payloadName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        SOAPElement message = payload.addChildElement("responseType"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        System.out.println("*****" + objects[0].toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return objects[0].toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void responseWs(Exchange exchange) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 生成ws返回内容 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param requestMessage 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static SOAPMessage createDefaultSoapMessage(String requestMessage) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SOAPMessage soapMessage = MessageFactory.newInstance().createMessage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SOAPBody body = soapMessage.getSOAPPart().getEnvelope().getBody(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            QName payloadName = new QName("http://gateway.api", "test", "ns1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SOAPBodyElement payload = body.addBodyElement(payloadName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SOAPElement message = payload.addChildElement("response"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            message.addTextNode(requestMessage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return soapMessage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (SOAPException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new RuntimeException(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |