1

I am a beginner in JBoss. I am making a database application that uses JPA. For exposing the same I have to expose a SOAP based web service. I followed the basic JBoss tutorial http://docs.jboss.org/tools/4.1.0.Final/en/ws_soap_reference/html/topdown.html#bottomupws to create a web service.

To consume the web service I created a client using the following tutorial. http://docs.jboss.org/tools/4.1.0.Final/en/ws_soap_reference/html/client.html

But when I am executing this client I am getting a 404 error. The exact same issue is reported on the JBoss community https://community.jboss.org/thread/164471?tstart=0

My Webservice bean looks something like this:

@WebService(name = "Management", targetNamespace = "http://www.example.org/Management")
public class Management {

@PersistenceContext
private EntityManager em;

@EJB(name = "ejb/ar/ClientEjb", mappedName = "ejb/ar/ClientEjb")
ClientRegistration clientReg;

@WebMethod(action = "http://www.example.org/Management/getAccount")
@WebResult(name = "getAccountResponse", partName = "getAccountResponse")
public String getAccount(
        @WebParam(name = "getAccountRequest", partName = "getAccountRequest") String param) {
    return "account-56789012354349";
}

@WebMethod(action = "http://www.example.org/Management/addClient")
public List<Client> addClient
(@WebParam(name = "clientId", partName = "clientId") long clientId ){
    //For time being let's forget this method.
    return null;
}
}

The web.xml has:

<servlet>
 <display-name>Management</display-name>
 <servlet-name>Management</servlet-name>
 <servlet-class>org.jboss.tools.examples.service.Management</servlet-class>
 </servlet>
 <servlet-mapping>
 <servlet-name>Management</servlet-name>
 <url-pattern>/Management</url-pattern>
  </servlet-mapping>

The Management.wsdl has:

<wsdl:service name="ManagementService">
   <wsdl:port name="ManagementPort" binding="tns:ManagementServiceSoapBinding">
    <soap:address location="http://localhost:9090/Management"/>
  </wsdl:port>
 </wsdl:service>

The ClientSample.java is:

public class ClientSample {

    public static void main(String[] args) {

            System.out.println("***********************");
            System.out.println("Create Web Service Client...");
            ManagementService service1 = new ManagementService();
            System.out.println("Create Web Service...");
            Management port1 = service1.getManagementPort();
            System.out.println("Call Web Service Operation...");
            System.out.println("Server said: " + port1.getAccount(null));
            System.out.println("Server said: " + port1.addClient(0));
            //Please input the parameters instead of 'null' for the upper method!

            System.out.println("Create Web Service...");
            Management port2 = service1.getManagementPort();
            System.out.println("Call Web Service Operation...");
            System.out.println("Server said: " + port2.addClient(Long.parseLong(args[1])));
            System.out.println("Server said: " + port2.getAccount(null));
            //Please input the parameters instead of 'null' for the upper method!

            System.out.println("***********************");
            System.out.println("Call Over!");
    }
}

Exception is like below:

***********************
Create Web Service Client...
Create Web Service...
Call Web Service Operation...
Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 404: Not Found
    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.checkStatusCode(HttpTransportPipe.java:196)
    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:168)
    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:83)
    at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:105)
    at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:587)
    at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:546)
    at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:531)
    at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:428)
    at com.sun.xml.internal.ws.client.Stub.process(Stub.java:211)
    at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:138)
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:98)
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
    at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:110)
    at com.sun.proxy.$Proxy29.getAccount(Unknown Source)
    at org.jboss.tools.examples.service.jaxws.clientsample.ClientSample.main(ClientSample.java:20)

I feel this may be because the service is not getting published, but I can't find I way to publish it.

I am using jboss-as-7.1.0.Final Runtime Server.

Note: Just to see if my Client code is correct I published the bean using

Endpoint.publish("http://localhost:9090/Management", new org.jboss.tools.examples.service.Management());

in the client code itself. The web service could be hit, but this is not in the application context of my application.

user814266
  • 41
  • 7

0 Answers0