小编cod*_*mer的帖子

在JAX-RS过滤器中捕获响应有效负载

我想在JAX-RS过滤器中捕获并记录响应有效负载.这是我用来拦截响应的过滤器方法的代码片段.(仅供参考 - 我正在使用RestEasy进行实施)

@Override
public void filter(final ContainerRequestContext requestContext, final ContainerResponseContext         responseContext) throws IOException {
    ...
      final OutputStream out = responseContext.getEntityStream();
       try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
               out.write(baos.toByteArray());
        ....
   }
}
Run Code Online (Sandbox Code Playgroud)

但是,ByteArrayOutputStream结果为空.查看RestEasy代码,它使用的是DeferredOutputStream,但不确定在拉动响应有效负载时这将如何重要.我曾尝试直接写入byte [],但这也无济于事.我在这里错过了什么吗?谢谢.

rest jax-rs resteasy

9
推荐指数
2
解决办法
7366
查看次数

Log4j2 文件包含:<include> 和 <included> 类似于 Logback

Log4j2 是否支持像 Logback 那样的文件包含机制?这是为了包含来自另一个文件的配置文件的一部分(包含附加程序、记录器等)

仅供参考 - 以下是它在 Logback 中的工作方式:

Joran 支持从另一个文件中包含部分配置文件。这是通过声明一个元素来完成的,如下所示:

示例:文件包含(logback-examples/src/main/java/chapters/configuration/ containsConfig.xml)

<configuration>
<include file="src/main/java/chapters/configuration/includedConfig.xml"/>

<root level="DEBUG">
<appender-ref ref="includedConsole" />
</root>
Run Code Online (Sandbox Code Playgroud)

目标文件必须将其元素嵌套在一个元素内。例如,可以将 ConsoleAppender 声明为:

示例:文件包含(logback-examples/src/main/java/chapters/configuration/includedConfig.xml)

<included>
<appender name="includedConsole" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
  <pattern>"%d - %m%n"</pattern>
</encoder>
</appender>
</included>
Run Code Online (Sandbox Code Playgroud)

java configuration logging log4j log4j2

7
推荐指数
2
解决办法
5288
查看次数

Spark Dataframe验证镶木地板写入(scala)的列名称

我正在使用从JSON事件流转换而来的Dataframes来处理事件,这些事件最终会像Parquet格式一样被写出来.

但是,一些JSON事件在键中包含空格,我想在将它转换为Parquet之前从数据框中记录和过滤/删除这些事件,因为,; {}()\n\t =被认为是Parquet中的特殊字符schema(CatalystSchemaConverter)如下面[1]中所列,因此不应在列名中使用.

如何在Dataframe上对列名进行此类验证,并完全删除此类事件,而不会错误输出Spark Streaming作业.

[1] Spark的CatalystSchemaConverter

def checkFieldName(name: String): Unit = {
    // ,;{}()\n\t= and space are special characters in Parquet schema
    checkConversionRequirement(
      !name.matches(".*[ ,;{}()\n\t=].*"),
      s"""Attribute name "$name" contains invalid character(s) among " ,;{}()\\n\\t=".
         |Please use alias to rename it.
       """.stripMargin.split("\n").mkString(" ").trim)
  }
Run Code Online (Sandbox Code Playgroud)

apache-spark parquet spark-streaming apache-spark-sql spark-dataframe

7
推荐指数
3
解决办法
4294
查看次数

Spring bean初始化两次 - Spring Integration

我正在尝试将我的应用程序与Spring Integration集成并体验我的自定义spring bean初始化两次,基本上我看到这些bean上的init方法被调用两次,一次是在服务器启动期间,第二次是在HTTP请求时通过DispatcherServlet制作.

这是我的web.xml配置:

  <servlet>
        <servlet-name>webapp</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/servlet-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>webapp</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

这是我的servlet-config.xml(删除了名称空间)

<import resource="springbeans-config.xml"/>

<context:component-scan base-package="com.test"/>

<context:annotation-config/>

<int:channel id="inboundChannel"/>
<int:channel id="outboundChannel"/>

<http:inbound-gateway request-channel="inboundChannel" reply-channel="outboundChannel" name="/*" supported-methods="GET, POST, PUT, DELETE" reply-timeout="120000"/>

<int:chain input-channel="inboundChannel">
    <int:service-activator ref="clearContext"/>
    <int:service-activator ref="gatewayFilter"/>
    <int:service-activator ref="audit_logger"/>
    <int:service-activator ref="gatewayContextHandler" method="process"/>
</int:chain>
Run Code Online (Sandbox Code Playgroud)

如上所示导入包含所有bean定义的自定义文件springbeans-config.xml.例如,下面的bean定义将在服务器启动期间调用两次,同时发出通过DispatcherServlet调用的HTTP请求.

    <bean name="sample" class="com.test.SampleImpl" init-method="init">
    <property name="xpathHelper" ref="XPathHelper"/>
    <property name="cacheManager" ref="cacheManager"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

想知道我在这里失踪了什么.非常感谢任何指针/帮助.谢谢.

================================================== =============

更新 - 已解决

SUMMIntegration示例中的loanhark示例有助于解决此问题.

这是更新的web.xml

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:META-INF/spring/applicationContext*.xml</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
    <servlet-name>gateway</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name> …
Run Code Online (Sandbox Code Playgroud)

spring-mvc spring-integration

5
推荐指数
1
解决办法
7475
查看次数

忽略记录器语句上的硬编码字符串 - IntelliJ

在IntelliJ上,我通常启用检查以在Java项目中查找硬编码字符串.但是,由于记录器语句中存在硬编码字符串,它可能会产生大量误报.

IntelliJ中是否有任何方法可以忽略此检查中的记录器语句?

java intellij-idea code-inspection

5
推荐指数
1
解决办法
326
查看次数

仅转换Scala列表的最后一个元素

是否可以仅转换Scala列表的最后一个元素,类似于此线程? - 仅转换Scala列表的第一个元素

scala

3
推荐指数
1
解决办法
435
查看次数

基于Java Regex的字符串替换

在下面的用例中寻找基于正则表达式的Java替换.我正在做一些基于Groovy的XML处理,并且由于一些自定义处理(在这方面不会详细说明),结果XML有一些无效的标签,例如

<?xml version='1.0' encoding='UTF-8'?>
<Customer id="xyz" xmlns='http://abc.com'>
<order orderGroup="mock">
    <entry>
        <key>test</key>
    </entry>
</order orderGroup="mock">
</Customer id="xyz">
Run Code Online (Sandbox Code Playgroud)

如果您注意到,包含属性的元素名称的结束标记会混乱.XML只是被视为一个字符串,所以我想做的是,只需通过基于字符串regex的替换来替换此类结束标记的出现.例如替换

</order orderGroup="mock"> with </order>, 
</Customer id="xyz"> with </Customer>
Run Code Online (Sandbox Code Playgroud)

任何想法是否有快速的基于Java String的正则表达式,我可以用来做这样的替换?

谢谢.

java regex xml groovy

1
推荐指数
1
解决办法
1531
查看次数

Scala:从字符串中删除后缀集(子字符串)的惯用方法

我正在寻找一种从 Scala 中的字符串中删除后缀(子字符串)集的惯用方法。

val inputString = "abc@xyz.com"
val suffixes = List("\"", "@xyz.com")
Run Code Online (Sandbox Code Playgroud)

基本上,后缀列表是从外部加载的,因此不是静态的。因此我不能使用链接 stripSuffix 方法的方法

(PS - 我将使用 inputString.stripPrefix("\"") 删除开头的 "

scala

1
推荐指数
1
解决办法
1107
查看次数