2013-06-04 21 views
5

Ho un progetto di servizio Web (WebServiceProject2) e voglio chiamare un metodo nel progetto EJB (BelsizeEJB).Chiamare il metodo EJB dal progetto di servizi Web

Ho fatto quanto segue: Right-click WebServiceProject2 -> Build Path -> Configure Build Path -> Projects tab -> Add -> BelsizeEJB -> OK

Login.java nel progetto BelsizeEJB

package com.belsize.module; 

public class Login { 

    public boolean loginuser(String User, String Password) { 
     String LOC = "Login: loginUser"; 
     System.out.println(LOC); 

     return true; 
    } 

} 

Authenticate.java in WebServiceProject2

package com.myeclipseide.ws; 

import com.belsize.module.Login; 

public class Authenticate { 

    public boolean doLogin_loginAction(String User, String Password) { 

     System.out.println("Testing Start"); 
     Login _l = new Login(); 
     System.out.println("Login Method Result: " + _l.loginuser(User, Password)); 
     System.out.println("Testing End"); 
     return _l.loginuser(User, Password); 

    } 
} 

Dopo il fatto di cui sopra, Ho creato un nuovo servizio web e generato il wsdl come segue:

Authenticate.wsdl

<wsdl:message name="doLogin_loginActionResponse"> 
    <wsdl:part element="impl:doLogin_loginActionResponse" name="parameters"> 
    </wsdl:part> 

    </wsdl:message> 

    <wsdl:message name="doLogin_loginActionRequest"> 
    <wsdl:part element="impl:doLogin_loginAction" name="parameters"> 
    </wsdl:part> 

    </wsdl:message> 

    <wsdl:message name="loginRequest"> 
    <wsdl:part element="impl:login" name="parameters"> 
    </wsdl:part> 

    </wsdl:message> 

    <wsdl:message name="loginResponse"> 
    <wsdl:part element="impl:loginResponse" name="parameters"> 
    </wsdl:part> 

    </wsdl:message> 

    <wsdl:portType name="Authenticate_SEI"> 
    <wsdl:operation name="login"> 
     <wsdl:input message="impl:loginRequest" name="loginRequest"> 
    </wsdl:input> 

     <wsdl:output message="impl:loginResponse" name="loginResponse"> 
    </wsdl:output> 

    </wsdl:operation> 

    <wsdl:operation name="doLogin_loginAction"> 
     <wsdl:input message="impl:doLogin_loginActionRequest" name="doLogin_loginActionRequest"> 
    </wsdl:input> 

     <wsdl:output message="impl:doLogin_loginActionResponse" name="doLogin_loginActionResponse"> 
    </wsdl:output> 

    </wsdl:operation> 

    </wsdl:portType> 

    <wsdl:binding name="AuthenticateSoapBinding" type="impl:Authenticate_SEI"> 
<wsaw:UsingAddressing xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" wsdl:required="false"/> 

    <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> 

    <wsdl:operation name="login"> 
     <wsdlsoap:operation soapAction=""/> 

     <wsdl:input name="loginRequest"> 
     <wsdlsoap:body use="literal"/> 

     </wsdl:input> 

     <wsdl:output name="loginResponse"> 
     <wsdlsoap:body use="literal"/> 

     </wsdl:output> 

    </wsdl:operation> 

    <wsdl:operation name="doLogin_loginAction"> 
     <wsdlsoap:operation soapAction=""/> 

     <wsdl:input name="doLogin_loginActionRequest"> 
     <wsdlsoap:body use="literal"/> 

     </wsdl:input> 

     <wsdl:output name="doLogin_loginActionResponse"> 
     <wsdlsoap:body use="literal"/> 

     </wsdl:output> 

    </wsdl:operation> 

    </wsdl:binding> 

    <wsdl:service name="AuthenticateService"> 
    <wsdl:port binding="impl:AuthenticateSoapBinding" name="Authenticate"> 
     <wsdlsoap:address location="http://localhost:9081/WebServiceProject2/services/Authenticate"/> 

    </wsdl:port> 

    </wsdl:service> 

</wsdl:definitions> 

Tuttavia quando provo a richiamare un'operazione WSDL, ho incontrato il seguente errore:

[6/4/13 15:54:36:006 SGT] 000000b7 SystemOut  O Testing Start 
[6/4/13 15:54:36:010 SGT] 000000b7 WebServicesSe E com.ibm.ws.webservices.engine.transport.http.WebServicesServlet doPost WSWS3227E: Error: Exception: 
           WebServicesFault 
faultCode: Server 
faultString: Internal Error 
faultActor: null 
faultDetail: 

Internal Error 
    at com.ibm.ws.webservices.engine.PivotHandlerWrapper.bindExceptionToResponse(PivotHandlerWrapper.java:531) 
    at com.ibm.ws.webservices.engine.PivotHandlerWrapper.invoke(PivotHandlerWrapper.java:353) 
    at com.ibm.ws.webservices.engine.handlers.jaxrpc.JAXRPCHandler.invoke(JAXRPCHandler.java:153) 
    at com.ibm.ws.webservices.engine.handlers.WrappedHandler.invoke(WrappedHandler.java:64) 
    at com.ibm.ws.webservices.engine.PivotHandlerWrapper.invoke(PivotHandlerWrapper.java:264) 
    at com.ibm.ws.webservices.engine.PivotHandlerWrapper.invoke(PivotHandlerWrapper.java:264) 
    at com.ibm.ws.webservices.engine.WebServicesEngine.invoke(WebServicesEngine.java:336) 
    at com.ibm.ws.webservices.engine.transport.http.WebServicesServlet.doPost(WebServicesServlet.java:1153) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:595) 
    at com.ibm.ws.webservices.engine.transport.http.WebServicesServletBase.service(WebServicesServletBase.java:344) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1225) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:775) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:457) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178) 
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1032) 
    at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87) 
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:908) 
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662) 
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:453) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:515) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:306) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:277) 
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214) 
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113) 
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:166) 
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) 
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) 
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204) 
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) 
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) 
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1691) 

SOAP Risposta E nvelope:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <soapenv:Body> 
    <soapenv:Fault> 
    <faultcode>Server</faultcode> 
    <faultstring>Internal Error</faultstring> 
    </soapenv:Fault> 
    </soapenv:Body> 
    </soapenv:Envelope> 

Molto apprezzato per la tua risposta. Grazie.

risposta

0

Il messaggio di errore sembra simile a questo:

JAX-WS server-side SOAPHandler that returns fault gets "Internal Error" on WebSphere v8

Secondo IBM:

When webservices.unify.faults is set to "true", the runtime exception thrown by the application code is unified, and the client will receive a SOAP fault message indicating "Internal Error".

The fix for this APAR is currently targeted for inclusion in fix packs 7.0.0.25 and 8.0.0.4. Please refer to the Recommended Updates page for delivery information: http://www.ibm.com/support/docview.wss?rs=180&uid=swg27004980

Forse si potrebbe aggiornare la versione di WebSphere ad almeno 8.0.0.4?

+1

Ho lo stesso problema. Sto usando WAS 8.5. – vivekpansara

+0

Sto utilizzando WAS 8.5.5.4 e sto riscontrando questo problema - lo stesso codice funziona in WAS 7. – Deian

Problemi correlati