小编wrs*_*der的帖子

使用Jackson JSON Views而不注释原始bean类

有没有什么方法可以使用Jackson JSON Views或类似的东西,而无需注释原始的bean类?我正在寻找某种运行时/动态配置让我做类似的事情.

我的bean是@Entity一个JAR打包的,可以由多个项目共享.我正试图避免因为消费项目中的UI更改而触摸并重新打包共享JAR.

理想情况下,我想做点什么

jsonViewBuilder = createViewBuilder(View.class);
jsonViewBuilder.addProperty("property1");
jsonViewBuilder.addProperty("property2");
Run Code Online (Sandbox Code Playgroud)

取代

Bean {
  @JsonView(View.class)
  String property1;

  @JsonView(View.class)
  String property2;
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

底层环境:Spring 3.0,Spring MVC和Glassfish 3.1.1.

spring json spring-mvc jackson

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

@MessageDriven事务和重新传递语义

完成以下任务的最佳方法是什么?

  • @MessageDriven bean在数据库上做了一些工作
  • 失败时,我想回滚数据库事务
  • 但是我也希望JMS消息不被重新传递,即不要重新尝试.

我能想到的几个方法可能会工作.还有其他什么,哪个最好?

  • 使用@TransactionManagement(type=BEAN)UserTransaction,并在捕获异常后显式回滚.例如:

    catch (Exception e) { e.printStackTrace(); utx.rollback(); }

  • 使用容器管理的事务,指定@TransactionAttribute(value=NOT_SUPPORTED)onMessage然后委托DB活动与一个单独的方法@TransactionAttribute(value=REQUIRED).

  • 保留事务处理,并在服务器中重新配置重试属性.我正在使用Glassfish 3.1.1,我不确定如何设置它.

  • 保留所有内容并明确检查消息是否在正文中重新发送,onMessage如果重新发送则退出.(message.getJMSRedelivered()?)

什么运作良好?有没有一种标准/最佳实践方法来处理这个问题?

jms glassfish message-driven-bean ejb-3.1 glassfish-3

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

JSF EL - 用默认值替换null

有没有办法用JSF EL表达式中的默认值替换null,有点像Oracle NVL函数?

我知道我可以做点什么

#{obj == null ? 'None' : obj.property}
Run Code Online (Sandbox Code Playgroud)

但希望有一种自动方式可以做到这一点,所以我不会复制/粘贴三元Elvis运算符两侧的相同表达式.

我正在寻找类似的东西

#{default(obj.property, 'None')}
Run Code Online (Sandbox Code Playgroud)

null jsf el

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

null-safe Collection包含方法

contains在Java集合上执行null-safe的最佳方法是什么?

换一种说法 -

 if (collection != null && collection.contains(x))
Run Code Online (Sandbox Code Playgroud)

我希望Apache commons-collections有类似的东西CollectionUtils.contains(collection, x),如果集合为null,就会返回false,因为有size(),像空集合一样处理null.

然而,似乎没有这样的事情 - 我只是想念它吗?

java collections apache-commons-collection

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

JASIG CAS:单点登出不起作用

我有单点登录工作漂亮,但单点登出不起作用.

场景是这样的:

  1. 打开webapp1并重定向到CAS登录页面
  2. 输入详细信息并登录
  3. 打开也使用CAS的webapp2.用户已登录时自动登录.
  4. 退出webapp1
  5. 尝试打开webapp1或webapp2(在另一个选项卡中)将您重定向回登录页面.
  6. 但是,步骤3中的webapp2会话未关闭,用户仍可以毫无问题地使用该应用程序.用户退出时如何自动使会话无效?

两个应用程序的注销按钮首先调用session.invalidate()然后重定向到https://localhost:8443/cas/logout

单点注销过滤器是web.xml文件中的第一个过滤器.我也有SingleSignOutHttpSessionListenerweb.xml.

以下是我的web.xml摘录

<!-- CAS settings -->
<!-- Use filter init-param if your container does not support context params. 
    CAS Authentication Filter and CAS Validation Filter need a serverName init-param 
    in lieu of a context-param definition. -->
<context-param>
    <param-name>serverName</param-name>
    <param-value>https://localhost:8443</param-value>
</context-param>

  <!-- Facilitates CAS single sign-out -->
  <listener>
        <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
  </listener>

  <!--
  CAS client filters
  Single sign-out filter MUST come first since it needs to be evaluated
  before …
Run Code Online (Sandbox Code Playgroud)

spring jsp cas java-ee single-sign-on

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

JSF AJAX验证:执行="@ this"render ="@ form"不一致,具体取决于先前的请求

我有一个h:commandLink调用方法来改变绑定到无线电输入的属性.

我还在同一个表单上有一个文本输入,带有一些验证(required = true).

如果我离开了文本输入栏,并点击h:commandLinkexecute="@this,从模型属性如预期,因为文字输入从未处理和验证永远不会触发单选按钮更新.

但是,如果一开始我点击一个不同的h:commandLinkexecute="@form",然后与链接execute="@this",确认消息消失,但单选按钮值也不会离即使UIInput单选按钮从未处于无效状态的模型更新.

我发现它的execute="@this"行为方式有所不同,这取决于我以前做过的事情,当我的意图@this是迫使所有内容从模型更新并忽略组件中提交的任何值时.

我怀疑发生的事情是这样的:

  • @form,单选按钮和文本都被处理.
  • 单选按钮有效,因此localValue设置
  • 由于文本输入无效,进程验证阶段总体失败,因此localValue保持设置状态并且不会被清除或传播到value
  • 除此之外的唯一方法是显式调用resetValue()或重新处理有问题的组件(例如,execute="@this radio")以清除localValue然后允许从bean刷新.

我的问题是:

  • 我对生命周期的理解是否正确?
  • 我做错了什么,或者这是关于JSF的烦人设计事情之一?

感觉这可能只是这个问题的另一个例子

在验证错误发生后,如何使用PrimeFaces AJAX填充文本字段?

不幸的是,我觉得我最近发现了很多这些.:-(

代码示例如下:

<h:form>
<h:messages/>

Radio = 
<h:selectOneRadio value="#{testBean.radioValue}" id="radio" binding="#{radio}">
    <f:selectItem itemValue="foo" itemLabel="Foo"/>
    <f:selectItem itemValue="bar" itemLabel="Bar"/>
</h:selectOneRadio>

<br></br>
radio bean value = <h:outputText value="#{testBean.radioValue}"/>
<br></br>
radio UIInput localValue …
Run Code Online (Sandbox Code Playgroud)

validation ajax jsf

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

当我使用单个equals时,为什么R子集会无声地失败

我在R中犯了这个菜鸟错误

subset(mtcars, cyl = 4)
Run Code Online (Sandbox Code Playgroud)

用单等于=而不是双等于==

为什么它会无声地失败,即返回未过滤的列表,而不是打破错误?

r

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

postgres_fdw:可以将数据推送到外部服务器进行加入吗?

假设我有一个类似的查询

select * from remote_table
   join local_table using(common_key)
Run Code Online (Sandbox Code Playgroud)

其中 remote_table 是一个FOREIGN TABLEwithpostgres_fdw并且local_table是一个普通表。

local_table小(100 行)和remote_table大(数百万行)。

看起来远程表被整体拉取并在本地加入,此时将较小的表发送到远程服务器并远程加入会更有效。

有没有办法让 postgres_fdw 做到这一点?

postgresql postgres-fdw postgresql-10

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

设置/拆除CI构建的Oracle模式,而不会破坏目录

我希望有一个CI构建(例如,Hudson)设置并拆除Oracle 11g架构,作为一个相当普通的JSF/JPA应用程序的每晚构建/测试周期的一部分.

最明显的方法是删除并重新创建所有表.虽然这感觉相当标准(至少,这就是Hibernate/JPA工具会为您自动完成的),但我已经让Oracle DBA警告我,在重复的对象创建/删除周期后,Oracle目录将会碎片化.最终这会导致性能问题,因为SYSTEM表空间无法进行碎片整理/合并.

我的问题是:

  • 碎片是一个真正的问题,或者在典型的webapp开发环境中你不需要担心什么?
  • 如果碎片真的是一个问题,是否有更好的方法来拆除和重建Oracle中的模式而不是DROP TABLE/CREATE TABLE?

谢谢!

oracle continuous-integration hibernate jpa

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

带有Glassfish的Eclipse调试器断点flakiness

在Linux/Ubuntu上的Eclipse Indigo和Glassfish 3.1.2中.JDK 1.6.0_32.

使用最新的Eclipse Glassfish插件在Glassfish 3.1.2.2和Eclipse Juno上更新相同的结果.

Eclipse调试器在断点处停止,但不会将"调试"选项卡与当前线程/位置同步,并且不会将光标显示在当前行.如果我手动展开每个线程的选项卡,我可以找出哪个线程停止了以及哪个线路.如果我点击它,我可以在当前行显示指针.然而,一旦我跨过/进入(F5/F6),当前行光标再次消失,我必须全部完成.

调试器工作正常使用JUnit和Java SE应用程序.这也是我一次启动Eclipse和Glassfish,一切正常.如果我重新启动Glassfish,调试器就会崩溃,直到我再次重启Eclipse.

有谁见过这个并找到了修复方法?

eclipse debugging glassfish

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