No one?

-----Original Message-----
From: Morein, Arnie <arnold.mor...@dps.texas.gov> 
Sent: Monday, December 7, 2020 3:35 PM
To: users@cxf.apache.org
Subject: CXF InInterceptors Definition Issue

Server: Wildfly 20
JDK: 15
CXF: 3.15.5

Hello everyone. I've looked for examples but have yet to find them.

I am consuming a third-party web service in a project. I've created the Java 
stubs and am consuming them.

I have a set of classes that log the SOAP XML (entire envelope) to a table. 

I have plugged them into the class that uses the service client end point thus:

@Inject
private FrdrbCxfSoapInInterceptor frdrbCxfSoapClientInInterceptor; @Inject 
private FrdrbCxfSoapOutInterceptor frdrbCxfSoapClientOutInterceptor; @Inject 
private CxfFaultInInterceptor cxfFaultInInterceptor; @Inject private 
CxfFaultOutInterceptor cxfFaultOutInterceptor;

...

FRSWebServices frsWebServices = new FRSWebServices();
service = frsWebServices.getFRSWebServicesPort();               
        
Client cxfClient = ClientProxy.getClient(service); // attach the 
WebServiceMessage intercepter which logs calls to the table 
cxfClient.getInInterceptors().add(frdrbCxfSoapClientInInterceptor);
cxfClient.getOutInterceptors().add(frdrbCxfSoapClientOutInterceptor);
// attach the WebServiceMessage intercepter which logs faults to the table 
cxfClient.getInFaultInterceptors().add(cxfFaultInInterceptor);
cxfClient.getOutFaultInterceptors().add(cxfFaultOutInterceptor);

The class hierarchy of these loggers is:

public class FrdrbCxfSoapOutInterceptorImpl 
        extends CxfSoapClientInterceptorImpl 
        implements FrdrbCxfSoapOutInterceptor {

public interface FrdrbCxfSoapOutInterceptor extends CxfSoapClientInterceptor {

public abstract class CxfSoapClientInterceptorImpl 
        extends AbstractSoapInterceptor 
        implements CxfSoapClientInterceptor {

public interface CxfSoapClientInterceptor extends 
PhaseInterceptor<SoapMessage>, Serializable {

And everything works as expected.

Now I want to use the same FrdrbCxfSoapOutInterceptorImpl / 
FrdrbCxfSoapInInterceptorImpl classes as the logger for an internal / testing 
instance of the service I am publishing within the same application project.

I have declared the published end point via:

@WebService(
   serviceName = FacialRecognitionBusServiceImpl.SERVICE_NAME,
   name = FacialRecognitionBusServiceImpl.SERVICE_NAME_PORT,
   targetNamespace = FacialRecognitionBusServiceImpl.SERVICE_NAME_SPACE)
@InFaultInterceptors(classes = CxfFaultInInterceptorImpl.class) 
@OutFaultInterceptors(classes = CxfFaultOutInterceptorImpl.class) 
@InInterceptors(classes = FrdrbCxfSoapInInterceptorImpl.class)
@OutInterceptors(classes = FrdrbCxfSoapOutInterceptorImpl.class)
public class FacialRecognitionBusServiceImpl implements 
FacialRecognitionBusService {

But on the @In/OutInterceptors class entry, I get an error in Eclipse stating:

Type mismatch: cannot convert from Class<FrdrbCxfSoapInInterceptorImpl> to 
Class<? extends Interceptor<? extends Message>>[]

And I cannot figure out why. This part is confusing:

Class<? extends Interceptor<? extends Message>>[]

As Interceptor is an interface reference NOT a class.

So how do I descend the class the way it expects? (I'd like to use the same 
logger as the client but if I need something different, so be it.)

Thanks in advance!

CAUTION: This email was received from an EXTERNAL source, use caution when 
clicking links or opening attachments.

If you believe this to be a malicious and/or phishing email, please send this 
email as an attachment to s...@dps.texas.gov.

Reply via email to