Is there an built in HTTP server in Apache CXF like "HttpServerFactory" of Jersey?
I tried reading through the CXF documentation but couldn't find anything similar.
Yes, there is.
If you want JAX-RS service deployed on built-in server use org.apache.cxf.jaxrs.JAXRSServerFactoryBean. Example usage (taken from CXF samples):
JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
sf.setResourceClasses(CustomerService.class);
sf.setResourceProvider(CustomerService.class,
new SingletonResourceProvider(new CustomerService()));
sf.setAddress("http://localhost:9000/");
sf.create();
If you want JAX-WS service deployed on built-in server you can use javax.xml.ws.Endpoint.publish(..). Sample code (again copied from CXF Sample):
HelloWorldImpl implementor = new HelloWorldImpl();
String address = "http://localhost:9000/helloWorld";
Endpoint.publish(address, implementor);
Both JAX-WS and JAX-RS require adding org.apache.cxf:cxf-rt-transports-http-jetty to classpath.
I really recommend taking look at CXF samples. Sometimes they are indispensable.
Related
I am trying to see whether MarkLogic Java API can be used to create a content database and REST Server?
I went through te Java API but I dont see any reference.
Is it possible to create a REST Server through MarkLogic Java API?
I appreciate any links or pointers regarding this.
No, that's beyond the scope of the Java Client API. The Java Client API must connect to a REST Server after it's already created. You can, however, use the /rest-apis service on port 8002 via your favorite generic REST client API for Java. To see an example of how to do this with Apache HttpClient, see Bootstrapper.java. You can use it directly like the unit tests setup util TestServerBootstrapper.java does with this code:
Bootstrapper.main(new String[] {
"-configuser", username,
"-configpassword", password,
"-confighost", host,
"-restserver", "java-unittest",
"-restport", ""+port,
"-restdb", "java-unittest"});
I am working on a fuse project in Jbds. I am running a route as local camel context. It has cxf endpoint(soap), route started and started listening at /order/. If anyone has experience running camel context with cxf end point locally in the jbds, would you please let me know how to send soap message to this route which running in local camel context in jbds?
Are you looking to invoke webservice from java (client)?
you can use Service.create to create Service instances, the following code illustrates this process:
import java.net.URL;
import javax.xml.ws.Service;
URL wsdlURL = new URL("http://localhost/hello?wsdl");
QName SERVICE_NAME = new QName("http://apache.org/hello_world_soap_http", "SOAPService");
Service service = Service.create(wsdlURL, SERVICE_NAME);
Greeter client = service.getPort(Greeter.class);
For More info refer apache cxf documentation [1]
[1]http://cxf.apache.org/docs/how-do-i-develop-a-client.html
Please follow the steps to test the SOAP service exposed. The steps details are mentioned in the image link.Image for the steps to be taken.
See all the services exposed by CXF service (SOAP).
See the WSDL for the services exposed by CXF (SOAP).
Open SOAPUI and create new SOAP project.
Enter the details i.e WSDL URL in project detail.
The project will be displayed on the left-hand side.
Open the request in SOAPUI.
Fill the request and hit the green submit button.
I want to use the REST api of a locally installed MS Project Server 2013 in order to get all projects and their associations(tasks, deliverables and resources) so that I will bind them with the business model of my custom J2ee application. So, I have 2 questions:
According to what I've read so far in MS Project Server documentation, I can use either ProjectData service or ProjectServer resource. What is considered more appropriate for my case?
Can anyone give me a simple example of getting projects and their associations using a Jersey client? Would something like the below be correct using the ProjectData service?
String url = "http://<pwa_site>/_api/ProjectData/$metadata";
Client client = Client.create();
WebResource webResource = client.resource(url);
ClientResponse response=webResource.accept("application/xml")
.get(ClientResponse.class);
String output = response.getEntity(String.class);
Any help would be appreciated.
ProjectData provides OData read-only access to the 38 entities for reporting. ProjectServer provides the main functionality of the Project Server Interface (PSI) for the primary entities.
For OData service, I use Apache Olingo library:
https://olingo.apache.org/doc/odata2/index.html
I have to implement a simple client to a XDS.b server (SubmitObjectRequest and RetrieveDocumentSetRequest operations), but I'm struggling to get even a simple example of use to work.
I've tried using Mirth Connect's Channel for XDS.b also, but with no use. I even tried to copy its SOAP envelope to use with SoapUI. Didn't work.
I'm using HIEOS deployed on Glassfish as my XDS.b server.
I'm lost and confused. Could anyone give me a guidance on how to make this work?
If the HIEOS is deployed correctly within the Glassfish the service endpoint provides a wsdl definition where the interface is specified. Check the Glassfish for the wsdl of the service.
http://localhost:8080/my-ws/simple?WSDL
Quelle: docs.oracle.com/cd/E18930_01/html/821-2418/gbiyw.html
The list of provided endpoints you can see here:
https://kenai.com/projects/hieos/pages/WebServices
So to retrieve the wsdl you should use for example:
http://localhost:8080/axis2/services/xdsrepositoryb?wsdl
which applies for the ProvideAndRegisterDocumentSet-b transaction of the XDS Repository actor.
You can use the WSDL definition to create a WS request using SOAP UI at first.
SOAP UI creates a request based upon the wsdl definition which can be used to
test a against your XDS repo.
When you know how a SOAP request must be constructed you can try it using Mirth or
create your own client using Apache CXF http://cxf.apache.org/ for example.
Or you use AXIS2 to create a client from the WSDL. Of course does Visual Studio and C# also offer mechanisms to create a WS client directly from a WSDL definition.
Hi I am not too familiar with web services in general but, I am trying to re-create an old Axis2 generated web service using Apache Camel and Apache CXF.
In the old service, the SOAP body had the following shape:
<chi:processAMessage soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<A xsi:type="xsd:string">A message</A>
<Code xsi:type="xsd:string">ABC</Code>
<Complete xsi:type="xsd:boolean">true</Complete>
</chi:processAMessage>
To re-create the old web service using CXF, I am following the Apache CXF example 'camel-example-cxf-tomcat'. In this example, SOAP bodies have the following shape:
<ns1:reportIncident xmlns:ns1="http://incident.cxf.example.camel.apache.org/">
<arg0>
<details>blah blah</details>
<email>davsclaus#apache.org</email>
<familyName>Smith</familyName>
<givenName>Bob</givenName>
<incidentDate>2011-11-25</incidentDate>
<incidentId>123</incidentId>
<phone>123-456-7890</phone>
<summary>blah blah summary</summary>
</arg0>
</ns1:reportIncident>
As I understand the CXF example, the node <reportIncident> is interpreted as the service's operation name, and <arg0> is interpreted as the service message's InputReportIncident bean.
How can I write my web service using CXF so that it interprets the SOAP body's root element as the service message's bean itself and therefore assuming a default operation name (as it is not included in the SOAP body)? Is this possible at all and, are there any examples that I can follow where all SOAP messages route to a common service operation name?
Thanks in advance,
PM.