0

在标准的 eclipse java 项目中,cxf.xml 配置文件的正确位置在哪里?我正在尝试启用在独立 jar 格式客户端 ws 消费者上记录的肥皂消息。使用 wsdltojava 实用程序生成的工件并使用自动生成的起点测试客户端,它工作得非常好。我根据文档创建了配置文件,但在我的控制台中我没有看到任何事情发生。这是我的 cxf.xml 文件内容:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:cxf="http://cxf.apache.org/core"
      xsi:schemaLocation=" 
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

<bean id="abstractLoggingInterceptor" abstract="true">
    <property name="prettyLogging" value="true"/>
</bean>
<bean id="loggingInInterceptor" class="org.apache.cxf.interceptor.LoggingInInterceptor" parent="abstractLoggingInterceptor"/>
<bean id="loggingOutInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor" parent="abstractLoggingInterceptor"/>

<cxf:bus>
    <cxf:inInterceptors>
        <ref bean="loggingInInterceptor"/>
    </cxf:inInterceptors>
    <cxf:outInterceptors>
        <ref bean="loggingOutInterceptor"/>
    </cxf:outInterceptors>
    <cxf:outFaultInterceptors>
        <ref bean="loggingOutInterceptor"/>
    </cxf:outFaultInterceptors>
    <cxf:inFaultInterceptors>
        <ref bean="loggingInInterceptor"/>
    </cxf:inFaultInterceptors>
</cxf:bus>  

</beans>

我试图把它放在项目根目录和 src 下,但没有。我错过了什么?

我的客户端代码是这样的:

公共最终类 ClientMHttps {

private static final QName SERVICE_NAME = new       QName("http://thecompany/service-b", "myendpoint-v1");

private  myendpointPortType port ;

public ClientMHttps() throws java.lang.Exception {
    URL wsdlURL = myendpointV1.WSDL_LOCATION;

    myendpointV1 ss = new myendpointV1(wsdlURL, SERVICE_NAME);
    port = ss.getmyendpointPortTypeEndpointHttpsM(); 




}

    public DeleteMarkedStatusResponse do_DeleteMarkedStatus(DeleteMarkedStatusRequest  _deleteMarkedStatus_body) throws java.lang.Exception
    {
    System.out.println("Invoking deleteMarkedStatus...");
    javax.xml.ws.Holder<HeaderType> _header =  this.HeaderFarm();
    DeleteMarkedStatusResponse _deleteMarkedStatus__return = port.deleteMarkedStatus(_deleteMarkedStatus_body, _header);
    System.out.println("deleteMarkedStatus.result=" + _deleteMarkedStatus__return);
    return _deleteMarkedStatus__return;


    }
4

3 回答 3

0

<jaxws:client>应将一个元素添加到将创建 CXF Web 服务客户端的 Spring 配置文件 (cxf.xml)。然后,您将需要在代码中使用此客户端 bean 来调用 Web 服务。

根据您要使用的日志框架,您可能需要按照此处META-INF/cxf/org.apache.cxf.Logger所述进行配置。

我创建了博客文章,更详细地解释了如何为log4jlogbacklog4j2配置 CXF。

请注意,您还可以使用不那么冗长的 CXF 日志记录功能。

于 2015-01-10T21:12:06.033 回答
0

我相信只是需要修复的 bean 名称和 cxf.xml 位置。

在 src/main/resources/cxf.xml 中,您可以使用这样的 cxf.xml 文件来记录所有 CXF 消息:

<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:cxf="http://cxf.apache.org/core"
      xsi:schemaLocation="
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

    <bean id="logInbound" class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
    <bean id="logOutbound" class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>

    <cxf:bus>
        <cxf:inInterceptors>
            <ref bean="logInbound"/>
        </cxf:inInterceptors>
        <cxf:outInterceptors>
            <ref bean="logOutbound"/>
        </cxf:outInterceptors>
        <cxf:outFaultInterceptors>
            <ref bean="logOutbound"/>
        </cxf:outFaultInterceptors>
        <cxf:inFaultInterceptors>
            <ref bean="logInbound"/>
        </cxf:inFaultInterceptors>
    </cxf:bus> 
</beans>
于 2012-10-27T15:35:01.120 回答
0

尝试为“org.apache.cxf.services”添加过滤器。

<logger level="INFO" name="org.apache.cxf.services"/>

日志不会为实现服务类的包生成,而是在自定义位置生成。

于 2017-04-24T14:18:07.833 回答