4 Nisan 2011 Pazartesi
problem passing time info through jaxws web service
10 Ocak 2011 Pazartesi
changing netbeans locale
Server cannot operate in current Locale. Locale is switched to en_US for the process. private final static URL ONTOLOGYMNGWSSERV�CE_WSDL_LOCATION; private final static WebServiceException ONTOLOGYMNGWSSERV�CE_EXCEPTION; private final static QName ONTOLOGYMNGWSSERV�CE_QNAME = new QName("http://ws.moass.com/", "OntologyMngWSService");-locale en_US to netbeans_default_options= in NETBEANS_HOME/etc/netbeans.conf file did not help my cause..env command, it is set to en_US.. luckily, the above error did not show up this time.. however, it tries to generate constructors such as public CalculatorWSService(WebServiceFeature... features) { super(__getWsdlLocation(), CALCULATORWSSERVICE_QNAME, features); }27 Ekim 2009 Salı
revisited : Troobleshooting: Date becomes XMLGregorianCalendar when stubs are generated at client side, how to prevent this?
5 Temmuz 2009 Pazar
jbpm bpel - first steps
- in order to make use of the examples coming with the jbpm bpel package, the following must be already installed:
- download jbpm bpel from http://www.jboss.org/jbossjbpm/bpel_downloads/ and extract.
- In
jbpm-bpel-1.1.1/examples/common/build.propertiesfile, modify the following properties accordingly:
- start jboss, (starting from port 8080 may be required, not sure. if something goes wrong, check that..)
- execute command
antinsidejbpm-bpel-1.1.1/examples, it should execute with success..
- lets see if wsdl s are available:
${JBOSS_HOME}/server/default/data/wsdlant deploy.ear inside /jbpm-bpel/jbpm-bpel-1.1.1/deploy and jbpm-bpel will be deployed on jboss. try to see jbpm bpel console from http://localhost:8080/jbpm-bpel/Edit on 7/7/2009, 10.55: Yeah, OpenESB designer produces standard bpel files. However, unfortunately this does not mean that it could open every standard bpel file in its designer..
19 Haziran 2009 Cuma
Troobleshooting: Date becomes XMLGregorianCalendar when stubs are generated at client side, how to prevent this?
The Problem Part: The environment: Netbeans 6.5 Ide and Glassfish as, on x64 linux machine (open suse). Here is the sample web service with java.util.Date type: package com.example.date; import java.util.Date; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; @WebService() public class DateWebService { @WebMethod(operationName = "dateOperation") public Date dateOperation(@WebParam(name = "date") Date date) { return date; } } The wsdl is at http://localhost:8080/DateProject/DateWebServiceService?WSDL The dependent xsd is at http://localhost:8080/DateProject/DateWebServiceService?xsd=1 The input and output types for dateOperation is as follows: <xs:complexType name="dateOperation"> <xs:sequence> <xs:element name="date" type="xs:dateTime" minOccurs="0"/> (<xs:sequence> </xs:complexType> <xs:complexType name="dateOperationResponse"> <xs:sequence> <xs:element name="return" type="xs:dateTime" minOccurs="0"/> </xs:sequence> <xs:complexType> It is obvious that java.util.Date is mapped to xs:dateTime. Lets see what happens when we generate the client stubs from the wsdl. (This is done by right clicking the project in Netbeans and selecting New Web Service Client and entering the wsdl to the related input.) The generated stubs are at the following location: Java.util.Date becomes javax.xml.datatype.XMLGregorianCalendar when xml is mapped to Java types againL (Comments are omitted from the following generated code for simplicity..) package com.example.date; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlSchemaType; import javax.xml.bind.annotation.XmlType; import javax.xml.datatype.XMLGregorianCalendar; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "dateOperation", propOrder = { "date" }) public class DateOperation { @XmlSchemaType(name = "dateTime") protected XMLGregorianCalendar date; public XMLGregorianCalendar getDate() { return date; } public void setDate(XMLGregorianCalendar value) { this.date = value; } } The reason for this is explained here: http://forums.java.net/jive/message.jspa?messageID=166006 So, the question is what sould be done to get java.util.Date instead of XMLGregorianCalendar when the stubs are generated at the client side? The Solution Part: Data conversion at the client side is a solution: http://www.velocityreviews.com/forums/t462336-convert-jaxb-xmlgregoriancalendar-to-javasqldate.html However, this may not be the case if you definitely want to get Date back when stubs are generated.. Prepare the following file i named jax-ws-jaxb-customization.xml: <?xml version="1.0" encoding="UTF-8"?> <jaxws:bindings node="wsdl:definitions/wsdl:types/xsd:schema" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" wsdlLocation="../wsdl/localhost_8080/DateProject/DateWebServiceService.wsdl"> <jaxb:globalBindings> <jaxb:serializable/> <jaxb:javaType name="java.util.Date" xmlType="xsd:dateTime"/> </jaxb:globalBindings> </jaxws:bindings> Use Netbeans Wsdl Customizer : Right click the web service under Web Service References, seleck Edit Web Service Attributes and select the second tab named WSDLCustomization Select the below External Binding File part and add jax-ws-jaxb-customization.xml as follows: Now, examine the generated stubs again, DateOperation is now as follows (again comments are removed for simplicity): package com.example.date; import java.io.Serializable; import java.util.Date; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlSchemaType; import javax.xml.bind.annotation.XmlType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import org.w3._2001.xmlschema.Adapter1; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "dateOperation", propOrder = { "date" }) public class DateOperation implements Serializable { @XmlElement(type = String.class) @XmlJavaTypeAdapter(Adapter1 .class) @XmlSchemaType(name = "dateTime") protected Date date; public Date getDate() { return date; } public void setDate(Date value) { this.date = value; } } And now there is a difference in the generated stubs, an Adapter1 is also generated: package com.example.date; import java.io.Serializable; import java.util.Date; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlSchemaType; import javax.xml.bind.annotation.XmlType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import org.w3._2001.xmlschema.Adapter1; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "dateOperation", propOrder = { "date" }) public class DateOperation implements Serializable { @XmlElement(type = String.class) @XmlJavaTypeAdapter(Adapter1 .class) @XmlSchemaType(name = "dateTime") protected Date date; public Date getDate() { return date; } public void setDate(Date value) { this.date = value; } } So, problem solved for now :)
11 Mayıs 2009 Pazartesi
OpenESB
Very first step is installing GlassFish ESB v2 GA (Nov 2008, Stable & Released) which also includes netbeans 6.1 ide & glassfish v2. (https://open-esb.dev.java.net/Downloads.html)
Tutorial on http://www.netbeans.org/kb/61/soa/synchsample.html is very straightforward..
Now it is time to create a composite application from scratch.. The steps are:
- create a sample web service to invoke from the following process. I used a random number generator..
- create New Project/SOA/Bpel Module
- create New Project/SOA/Composite Application
- right click composite app and add created bpel module as new jbi module for that app.
- create a Bpel process in Bpel module.
- create a Wsdl (abstract) in Bpel module.
- add PartnerLink to your bpel file with the type in the wsdl., the wsdl is automatically imported by the Bpel process.
- add receive and reply elements to be pointed by that partnerlink.
- copy the wsdl of the outer ws to bpel module. do not forget to copy all dependent files such as xsd s and update the location definitions in wsdl.
- add wsdl import by file.
- create a partnerlink for that wsdl in bpel file. this creates a wrapper wsdl for the outer wsdl and automatically adds them to the main wsdl of the process.
- do not forget to replace the soap location as 9080 in the main wsdl of the process.
- create a binding and a service for the main wsdl. otherwise, you can not test them via test node of the composite app.
- deploy the composite app.
- test the process via the test node in the composite app.
Btw, i really liked OpenESB.. It provides a compact environment for web service development and orchestration.. Deployment and testing the process is very very easy. (Testing the deployed process in Eclipse Bpel + Apache ODE killed me before, but maybe it is my unskillfulness, so i say this out of the record :)) ) I liked the robustness and user friendliness of the Netbeans Bpel designer. Deleting elements from the process or moving the elements does not lead to problems..
That is all for now :)
Edit on 25.06.2009 11:12 : I supposed that full netbeans ide download does not provide me with open esb, but i was wrong (due to wrong download:( ) So, netbeans (with all option) from http://www.netbeans.org/downloads/start.html?platform=linux&lang=en&option=all&version=6.5.1 also supports open esb..
Edit on 26.06.2009 11.16: This is also a step-by-step tutorial http://www.netbeans.org/kb/61/soa/helloworldca.html