2014-08-29 5 views
0

вот что я получил: установлен и настроен SOA Suite 11g, (weblogic server 10.3, утилита создания репозитория, soa suite, jdeveloper studio, база данных Oracle XE 10g).Потребление SOA Suite WSDL SOAP

SOA инфраструктуры обслуживания двигателей (BPEL, Посредник, бизнес-правила, Himan рабочий Metadastore (MDS) менеджер предприятия, веб-сервис менеджер, B2B, Adapterframework (JCA) Oracle Business Activity мониторинга (BAM)

Все настройки и работа. обучающий проект Покупка Обработка заказов создана и работает, а также (его из книги „начало работы с Oracle SOA Suite 11g R1 руками на учебнике“).

Испытаний выполняются в порядке, все прошло (несколько видов кредитных карт, малых, средних и крупных заказов, автоматическое и ручное одобрение, несколько видов на перевозку груза автоматически выбирается по размеру в порядке и т.д.)

enter image description here

То, что я хочу сейчас, чтобы соединиться - потреблять - это услуга от приложения палин JAVA. После этого урока (http://theopentutorials.com/examples/java-ee/jax-ws/create-and-consume-web-service-using-jax-ws/) Мне удалось использовать инструмент JAX-WS под названием «wsimport» для генерации артефактов, необходимых для создания и использования веб-службы. 'wsimport' принимает входной файл wsdl. Он составлен хорошо, кроме одного предупреждения за то, что я думаю, что это не критично

C (или, может быть, это?): \ Users \ Ненад \ eclipseJunoSESR2 \ GettingStartedWithEclipseJuno \ SOAConsume02> wsimport -s -d ЦСИ бен http://i3770k.mshome.net:8001/soa-infra/services/default/POProcessing/receivePO?WSDL

парсинг WSDL ...

[ПРЕДУПРЕЖДЕНИЕ] R2716 WSI-BasicProfile ver. 1,0, атрибут пространства имен не допускается в документ/освещенным soapbind: тело: "выполнить" линию 31 из http://i3770k.mshome.net:8001/soa-infra/services/default/POProcessing/receivePO?WSDL

генерирующего код ... компиляции кода ...

C: \ Users \ Ненад \ eclipseJunoSESR2 \ GettingStartedWithEclipseJuno \ SOAConsume02>

Так классы есть:

enter image description here

И теперь я застрял, потому что я понятия не имею, как отправить «заказ», т.как заполнить входные аргументы:

запроса PurchaseOrderType * CustID строка Значение * Идентификационной строка Значения ProductName строки ItemType строки цена десятичного количество десятичной строка состояния ccType строка ccNumber

В затмении я создал SOAClient класса такие как:

package com.oracle.client; 

import java.math.BigDecimal; 

import com.oracle.sca.soapservice.poprocessing.poprocessing.receivepo.ReceivePO; 
import com.oracle.xmlns.ns.order.PurchaseOrderType; 

public class SOAClient { 
    public static void main(String[] args) { 

     ReceivePO receivePO = new ReceivePO(); 
     PurchaseOrderType pot = new PurchaseOrderType(); 

     pot.setCustID("1111"); 
     pot.setID("2121"); 
     pot.setProductName("Bluetooth Headset"); 
     pot.setItemType("Electronics"); 
     BigDecimal bd_p = new BigDecimal("49.99"); 
     pot.setPrice(bd_p); 
     BigDecimal bd_q = new BigDecimal("1000"); 
     pot.setQuantity(bd_q); 
     pot.setStatus("initial"); 
     pot.setCcType("Mastercard"); 
     pot.setCcNumber("8765-8765-8765-8765"); 

    } 
} 

автогенерируемых класса Exe cutePtt выглядит следующим образом:

package com.oracle.sca.soapservice.poprocessing.poprocessing.receivepo; 

import javax.jws.Oneway; 
import javax.jws.WebMethod; 
import javax.jws.WebParam; 
import javax.jws.WebService; 
import javax.jws.soap.SOAPBinding; 
import javax.xml.bind.annotation.XmlSeeAlso; 
import com.oracle.xmlns.ns.order.ObjectFactory; 
import com.oracle.xmlns.ns.order.PurchaseOrderType; 


/** 
* This class was generated by the JAX-WS RI. 
* JAX-WS RI 2.1.6 in JDK 6 
* Generated source version: 2.1 
* 
*/ 
@WebService(name = "execute_ptt", targetNamespace = "http://oracle.com/sca/soapservice/POProcessing/POProcessing/receivePO") 
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE) 
@XmlSeeAlso({ 
    ObjectFactory.class 
}) 
public interface ExecutePtt { 


    /** 
    * 
    * @param request 
    */ 
    @WebMethod(action = "execute") 
    @Oneway 
    public void execute(
     @WebParam(name = "PurchaseOrder", targetNamespace = "http://xmlns.oracle.com/ns/order", partName = "request") 
     PurchaseOrderType request); 

} 

ReceivePO класс:

package com.oracle.sca.soapservice.poprocessing.poprocessing.receivepo; 

import java.net.MalformedURLException; 
import java.net.URL; 
import java.util.logging.Logger; 
import javax.xml.namespace.QName; 
import javax.xml.ws.Service; 
import javax.xml.ws.WebEndpoint; 
import javax.xml.ws.WebServiceClient; 
import javax.xml.ws.WebServiceFeature; 


/** 
* This class was generated by the JAX-WS RI. 
* JAX-WS RI 2.1.6 in JDK 6 
* Generated source version: 2.1 
* 
*/ 
@WebServiceClient(name = "receivePO", targetNamespace = "http://oracle.com/sca/soapservice/POProcessing/POProcessing/receivePO", wsdlLocation = "http://i3770k.mshome.net:8001/soa-infra/services/default/POProcessing/receivePO?WSDL") 
public class ReceivePO 
    extends Service 
{ 

    private final static URL RECEIVEPO_WSDL_LOCATION; 
    private final static Logger logger = Logger.getLogger(com.oracle.sca.soapservice.poprocessing.poprocessing.receivepo.ReceivePO.class.getName()); 

    static { 
     URL url = null; 
     try { 
      URL baseUrl; 
      baseUrl = com.oracle.sca.soapservice.poprocessing.poprocessing.receivepo.ReceivePO.class.getResource("."); 
      url = new URL(baseUrl, "http://i3770k.mshome.net:8001/soa-infra/services/default/POProcessing/receivePO?WSDL"); 
     } catch (MalformedURLException e) { 
      logger.warning("Failed to create URL for the wsdl Location: 'http://i3770k.mshome.net:8001/soa-infra/services/default/POProcessing/receivePO?WSDL', retrying as a local file"); 
      logger.warning(e.getMessage()); 
     } 
     RECEIVEPO_WSDL_LOCATION = url; 
    } 

    public ReceivePO(URL wsdlLocation, QName serviceName) { 
     super(wsdlLocation, serviceName); 
    } 

    public ReceivePO() { 
     super(RECEIVEPO_WSDL_LOCATION, new QName("http://oracle.com/sca/soapservice/POProcessing/POProcessing/receivePO", "receivePO")); 
    } 

    /** 
    * 
    * @return 
    *  returns ExecutePtt 
    */ 
    @WebEndpoint(name = "execute_pt") 
    public ExecutePtt getExecutePt() { 
     return super.getPort(new QName("http://oracle.com/sca/soapservice/POProcessing/POProcessing/receivePO", "execute_pt"), ExecutePtt.class); 
    } 

    /** 
    * 
    * @param features 
    *  A list of {@link javax.xml.ws.WebServiceFeature} to configure on the proxy. Supported features not in the <code>features</code> parameter will have their default values. 
    * @return 
    *  returns ExecutePtt 
    */ 
    @WebEndpoint(name = "execute_pt") 
    public ExecutePtt getExecutePt(WebServiceFeature... features) { 
     return super.getPort(new QName("http://oracle.com/sca/soapservice/POProcessing/POProcessing/receivePO", "execute_pt"), ExecutePtt.class, features); 
    } 

} 

ObjectFactory класс:

package com.oracle.xmlns.ns.order; 

import javax.xml.bind.JAXBElement; 
import javax.xml.bind.annotation.XmlElementDecl; 
import javax.xml.bind.annotation.XmlRegistry; 
import javax.xml.namespace.QName; 


/** 
* This object contains factory methods for each 
* Java content interface and Java element interface 
* generated in the com.oracle.xmlns.ns.order package. 
* <p>An ObjectFactory allows you to programatically 
* construct new instances of the Java representation 
* for XML content. The Java representation of XML 
* content can consist of schema derived interfaces 
* and classes representing the binding of schema 
* type definitions, element declarations and model 
* groups. Factory methods for each of these are 
* provided in this class. 
* 
*/ 
@XmlRegistry 
public class ObjectFactory { 

    private final static QName _PurchaseOrder_QNAME = new QName("http://xmlns.oracle.com/ns/order", "PurchaseOrder"); 

    /** 
    * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: com.oracle.xmlns.ns.order 
    * 
    */ 
    public ObjectFactory() { 
    } 

    /** 
    * Create an instance of {@link PurchaseOrderType } 
    * 
    */ 
    public PurchaseOrderType createPurchaseOrderType() { 
     return new PurchaseOrderType(); 
    } 

    /** 
    * Create an instance of {@link JAXBElement }{@code <}{@link PurchaseOrderType }{@code >}} 
    * 
    */ 
    @XmlElementDecl(namespace = "http://xmlns.oracle.com/ns/order", name = "PurchaseOrder") 
    public JAXBElement<PurchaseOrderType> createPurchaseOrder(PurchaseOrderType value) { 
     return new JAXBElement<PurchaseOrderType>(_PurchaseOrder_QNAME, PurchaseOrderType.class, null, value); 
    } 

} 

пакет-инфо является

@javax.xml.bind.annotation.XmlSchema(namespace = "http://xmlns.oracle.com/ns/order", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED) 
package com.oracle.xmlns.ns.order; 

и

PurchaseOrderType класс

package com.oracle.xmlns.ns.order; 

import java.math.BigDecimal; 
import javax.xml.bind.annotation.XmlAccessType; 
import javax.xml.bind.annotation.XmlAccessorType; 
import javax.xml.bind.annotation.XmlElement; 
import javax.xml.bind.annotation.XmlType; 


/** 
* <p>Java class for PurchaseOrderType complex type. 
* 
* <p>The following schema fragment specifies the expected content contained within this class. 
* 
* <pre> 
* &lt;complexType name="PurchaseOrderType"> 
* &lt;complexContent> 
*  &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> 
*  &lt;sequence> 
*   &lt;element name="CustID" type="{http://www.w3.org/2001/XMLSchema}string"/> 
*   &lt;element name="ID" type="{http://www.w3.org/2001/XMLSchema}string"/> 
*   &lt;element name="productName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> 
*   &lt;element name="itemType" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> 
*   &lt;element name="price" type="{http://www.w3.org/2001/XMLSchema}decimal" minOccurs="0"/> 
*   &lt;element name="quantity" type="{http://www.w3.org/2001/XMLSchema}decimal" minOccurs="0"/> 
*   &lt;element name="status" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> 
*   &lt;element name="ccType" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> 
*   &lt;element name="ccNumber" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> 
*  &lt;/sequence> 
*  &lt;/restriction> 
* &lt;/complexContent> 
* &lt;/complexType> 
* </pre> 
* 
* 
*/ 
@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "PurchaseOrderType", propOrder = { 
    "custID", 
    "id", 
    "productName", 
    "itemType", 
    "price", 
    "quantity", 
    "status", 
    "ccType", 
    "ccNumber" 
}) 
public class PurchaseOrderType { 

    @XmlElement(name = "CustID", required = true) 
    protected String custID; 
    @XmlElement(name = "ID", required = true) 
    protected String id; 
    protected String productName; 
    protected String itemType; 
    protected BigDecimal price; 
    protected BigDecimal quantity; 
    protected String status; 
    protected String ccType; 
    protected String ccNumber; 

    /** 
    * Gets the value of the custID property. 
    * 
    * @return 
    *  possible object is 
    *  {@link String } 
    *  
    */ 
    public String getCustID() { 
     return custID; 
    } 

    /** 
    * Sets the value of the custID property. 
    * 
    * @param value 
    *  allowed object is 
    *  {@link String } 
    *  
    */ 
    public void setCustID(String value) { 
     this.custID = value; 
    } 

    /** 
    * Gets the value of the id property. 
    * 
    * @return 
    *  possible object is 
    *  {@link String } 
    *  
    */ 
    public String getID() { 
     return id; 
    } 

    /** 
    * Sets the value of the id property. 
    * 
    * @param value 
    *  allowed object is 
    *  {@link String } 
    *  
    */ 
    public void setID(String value) { 
     this.id = value; 
    } 

    /** 
    * Gets the value of the productName property. 
    * 
    * @return 
    *  possible object is 
    *  {@link String } 
    *  
    */ 
    public String getProductName() { 
     return productName; 
    } 

    /** 
    * Sets the value of the productName property. 
    * 
    * @param value 
    *  allowed object is 
    *  {@link String } 
    *  
    */ 
    public void setProductName(String value) { 
     this.productName = value; 
    } 

    /** 
    * Gets the value of the itemType property. 
    * 
    * @return 
    *  possible object is 
    *  {@link String } 
    *  
    */ 
    public String getItemType() { 
     return itemType; 
    } 

    /** 
    * Sets the value of the itemType property. 
    * 
    * @param value 
    *  allowed object is 
    *  {@link String } 
    *  
    */ 
    public void setItemType(String value) { 
     this.itemType = value; 
    } 

    /** 
    * Gets the value of the price property. 
    * 
    * @return 
    *  possible object is 
    *  {@link BigDecimal } 
    *  
    */ 
    public BigDecimal getPrice() { 
     return price; 
    } 

    /** 
    * Sets the value of the price property. 
    * 
    * @param value 
    *  allowed object is 
    *  {@link BigDecimal } 
    *  
    */ 
    public void setPrice(BigDecimal value) { 
     this.price = value; 
    } 

    /** 
    * Gets the value of the quantity property. 
    * 
    * @return 
    *  possible object is 
    *  {@link BigDecimal } 
    *  
    */ 
    public BigDecimal getQuantity() { 
     return quantity; 
    } 

    /** 
    * Sets the value of the quantity property. 
    * 
    * @param value 
    *  allowed object is 
    *  {@link BigDecimal } 
    *  
    */ 
    public void setQuantity(BigDecimal value) { 
     this.quantity = value; 
    } 

    /** 
    * Gets the value of the status property. 
    * 
    * @return 
    *  possible object is 
    *  {@link String } 
    *  
    */ 
    public String getStatus() { 
     return status; 
    } 

    /** 
    * Sets the value of the status property. 
    * 
    * @param value 
    *  allowed object is 
    *  {@link String } 
    *  
    */ 
    public void setStatus(String value) { 
     this.status = value; 
    } 

    /** 
    * Gets the value of the ccType property. 
    * 
    * @return 
    *  possible object is 
    *  {@link String } 
    *  
    */ 
    public String getCcType() { 
     return ccType; 
    } 

    /** 
    * Sets the value of the ccType property. 
    * 
    * @param value 
    *  allowed object is 
    *  {@link String } 
    *  
    */ 
    public void setCcType(String value) { 
     this.ccType = value; 
    } 

    /** 
    * Gets the value of the ccNumber property. 
    * 
    * @return 
    *  possible object is 
    *  {@link String } 
    *  
    */ 
    public String getCcNumber() { 
     return ccNumber; 
    } 

    /** 
    * Sets the value of the ccNumber property. 
    * 
    * @param value 
    *  allowed object is 
    *  {@link String } 
    *  
    */ 
    public void setCcNumber(String value) { 
     this.ccNumber = value; 
    } 

} 

Therfore мои вопросы:

  1. То, что я должен добавить в моем классе SOAClient, чтобы сделать эту работу (установить параметры и выполнить тестовый заказ)

  2. Должен ли я использовать JAX-WS вообще? Я спрашиваю, потому что я видел некоторые учебники без него, но я еще не изучал их.

ответ

0

Однажды, когда я нашел его, решение выглядит довольно просто. Тип занятия: работа:

package com.oracle.client; 

import java.math.BigDecimal; 

import com.oracle.sca.soapservice.poprocessing.poprocessing.receivepo.ExecutePtt; 
import com.oracle.sca.soapservice.poprocessing.poprocessing.receivepo.ReceivePO; 
import com.oracle.xmlns.ns.order.ObjectFactory; 
import com.oracle.xmlns.ns.order.PurchaseOrderType; 

public class SOAClient { 
    public static void main(String[] args) { 

     ReceivePO recPOService = new ReceivePO(); 
     ExecutePtt recPOPort = recPOService.getExecutePt(); 
     PurchaseOrderType purchaseOrder = new ObjectFactory() 
       .createPurchaseOrderType(); 

     purchaseOrder.setCustID("1111"); 
     purchaseOrder.setID("2121"); 
     purchaseOrder.setProductName("Bluetooth Headset"); 
     purchaseOrder.setItemType("Electronics"); 
     BigDecimal bd_p = new BigDecimal("49.99"); 
     purchaseOrder.setPrice(bd_p); 
     BigDecimal bd_q = new BigDecimal("10"); 
     purchaseOrder.setQuantity(bd_q); 
     purchaseOrder.setStatus("initial"); 
     purchaseOrder.setCcType("Mastercard"); 
     purchaseOrder.setCcNumber("8765-8765-8765-8765"); 

     recPOPort.execute(purchaseOrder); 

    } 
}