小编tan*_*ens的帖子

使用log4J级别

编码时使用log4j级别的最佳做法是什么?我的意思是我们何时使用INFO日志记录,何时使用DEBUG日志记录/ ERROR日志记录等.

log4j

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

如何在Java中删除HTML标记

是否有可以完全删除HTML标记的正则表达式?顺便说一下,我正在使用Java.

html java regex

14
推荐指数
3
解决办法
4万
查看次数

Spring 3.0设置并获取会话属性

我想从会话范围中读取域对象(UserVO).

我在名为WelcomeController的控制器中设置UserVO

@Controller
@RequestMapping("/welcome.htm")
public class WelcomeController {
@RequestMapping(method = RequestMethod.POST)
    public String processSubmit(BindingResult result, SessionStatus status,HttpSession session){
      User user = loginService.loginUser(loginCredentials);
     session.setAttribute("user", user);
         return "loginSuccess";
    }
}
Run Code Online (Sandbox Code Playgroud)

我能够在jsp页面中使用该对象 <h1>${user.userDetails.firstName}</h1>

但是我无法从另一个Controller中读取值,

我正在尝试读取session属性,如下所示:

@Controller
public class InspectionTypeController {
@RequestMapping(value="/addInspectionType.htm", method = RequestMethod.POST )
 public String addInspectionType(InspectionType inspectionType, HttpSession session)
 {
           User user = (User) session.getAttribute("user");
           System.out.println("User: "+ user.getUserDetails().getFirstName);

        }
} 
Run Code Online (Sandbox Code Playgroud)

java spring session-variables

14
推荐指数
2
解决办法
10万
查看次数

如何在一个Java应用程序中处理不同版本的xsd文件?

事实

在我的java应用程序中,我必须同时处理具有不同模式版本(xsd文件)的XML文件.XML文件的内容在不同版本之间只有一点点变化,因此我想主要使用相同的代码来处理它,并且只是根据所使用的模式的版本来做一些案例distic.

现行解决方案

现在我正在使用SAX解析器解析XML文件,我自己ContentHandler忽略了架构版本,只是检查我需要处理的标签是否存在.

可能的选择

我真的很想使用JAXB生成用于解析XML文件的类.这样我就可以从我的java代码中删除所有硬编码字符串(常量),并使用生成的类来处理.

问题(S)

  • 如何使用JAXB以统一的方式处理不同的模式版本?
  • 有更好的解决方案吗?

进展

我将模式版本编译为不同的包v1,v2和v3.现在我可以这样创建Unmarshaller:

JAXBContext jc = JAXBContext.newInstance( 
    v1.Root.class, v2.Root.class, v3.Root.class );
Unmarshaller u = jc.createUnmarshaller();
Run Code Online (Sandbox Code Playgroud)

现在u.unmarshal( xmlInputStream );给我一个Root匹配XML文件架构的包中的类.

接下来,我将尝试定义一个interface访问模式的公共部分.如果您以前做过类似的事情,请告诉我.与此同时,我正在阅读JAXB规范......

java xml xsd jaxb

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

Eclipse getResourceAsStream返回null

我无法让getResourceAsStream找到一个文件.我把文件放在顶级目录,目标目录等等,并在前面尝试了"/".每次返回null.

有什么建议 ?谢谢.

public class T {
 public static final void main(String[] args) {

  InputStream propertiesIS = T.class.getClassLoader().getResourceAsStream("test.txt");

  System.out.println("Break");
 }
}
Run Code Online (Sandbox Code Playgroud)

eclipse null resources

12
推荐指数
2
解决办法
3万
查看次数

如何修改spring容器中定义的bean

我有两个xml文件定义springframework(版本2.5.x)的bean:

containerBase.xml:
<beans>
    <bean id="codebase" class="com.example.CodeBase">
        <property name="sourceCodeLocations">
            <list>
                <value>src/handmade/productive</value>
            </list>
        </property>
    </bean>
</beans>
Run Code Online (Sandbox Code Playgroud)

......和

containerSpecial.xml:
<beans>
    <import resource="containerBase.xml" />
</beans>
Run Code Online (Sandbox Code Playgroud)

现在我想调整财产sourceCodeLocationsbean的codebase范围内containerSpecial.xml.我需要添加第二个值src/generated/productive.

一个简单的方法是覆盖codebasein 的定义containerSpecial.xml并添加两个值,一个来自containerBase.xml和新的:

containerSpecial.xml:
<beans>
    <import resource="containerBase.xml" />

    <bean id="codebase" class="com.example.CodeBase">
        <property name="sourceCodeLocations">
            <list>
                <value>src/handmade/productive</value>
                <value>src/generated/productive</value>
            </list>
        </property>
    </bean>
</beans>
Run Code Online (Sandbox Code Playgroud)

有没有办法扩展列表而不重新定义bean?

编辑2009-10-06:

这样做的目的是拥有一个containerBase由许多不同项目使用的共享标准容器.每个项目都可以覆盖/扩展一些特定于该项目的属性containerSpecial.如果项目没有覆盖,则使用中定义的默认值containerBase.

java spring ioc-container

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

如何在DB2上的多个表上使用WHERE条件执行安全的"SELECT FOR UPDATE"?

问题

在DB2(版本9.5)上的SQL语句

SELECT o.Id FROM Table1 o, Table2 x WHERE [...] FOR UPDATE WITH RR
Run Code Online (Sandbox Code Playgroud)

给我错误消息SQLSTATE=42829(不允许FOR UPDATE子句,因为无法修改游标指定的表).

附加信息

我需要指定WITH RR,因为我在隔离级别上运行READ_COMMITTED,但我需要阻止我的查询,而另一个进程运行相同的查询.

迄今解决方案......

如果我改为这样查询:

SELECT t.Id FROM Table t WHERE t.Id IN (
    SELECT o.Id FROM Table1 o, Table2 x WHERE [...]
) FOR UPDATE WITH RR
Run Code Online (Sandbox Code Playgroud)

一切正常.

新问题

但是现在,当多个进程同时执行此查询时,我偶尔会遇到死锁异常.

有没有办法在FOR UPDATE不引入可能发生死锁的地方的情况下制定查询?

db2 database-deadlocks

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

将布尔变量展开为字符串"true"或"false"

在freemarker模板中,我想将布尔变量扩展为类似的字符串:

<#assign booleanVar = "test".isEmpty() />
state: ${booleanVar} <#-- this throws an exception! -->
Run Code Online (Sandbox Code Playgroud)

这是我想要的输出:

state: false
Run Code Online (Sandbox Code Playgroud)

我现在发现达到这个目标的唯一方法是:

state: <#if booleanVar>true<#else>false</#if>
Run Code Online (Sandbox Code Playgroud)

有更简单的方法吗?

freemarker

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

如何从Java EE应用程序提供套接字?

我们希望在Java EE应用服务器(JBoss 4.2.3)中提供一些客户端请求.我读到Java EE规范不允许从企业bean打开套接字.但该规范表明没有其他选择.

具体来说,企业bean不应该:

  • 监听,接受网络套接字上的连接或多播

所以问题是:我可以做什么来从应用服务器中提供一些基于二进制 tcp的协议(而不是http)?

这里有人建议实现资源适配器.这是你必须去的方式还是其他(更容易)的解决方案?

java sockets jboss java-ee

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

如何处理正则表达式的不同方言(java与xsd)?

当我尝试针对Java中的XSD验证XML文件时(请参阅此示例),XSD文件中给出的正则表达式与java中的正则表达式之间存在一些不兼容性.

如果有一个像"[ab-]"XSD中的正则表达式(意思是任何字符"a","b"或" - ",则java会抱怨表达式中存在语法错误.

这是自2005年3月28日以来的已知错误,请参阅Sun bug数据库.

我该怎么做才能解决这个错误?到目前为止,我尝试通过替换"[ab-]"by 来"纠正"XSD文件"[ab\-]",但有时这不是一个选项.


如果你也遇到这个bug的问题,请在Sun bug数据库中投票!

java regex xsd

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