小编Pau*_*aul的帖子

如何从堆转储中了解Java对象是否处于tenure或eden空间中

我有一个Hotspot JVM堆转储,我试图找出一个对象是否在权属空间,伊甸园空间或幸存者空间中存在,但我不能.

感谢有人可以帮助我.

java garbage-collection jvm-hotspot heap-dump

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

如何从NetBeans部署到Tomcat?

我在"工具>服务器"菜单中添加了Tomcat,您可以看到它出现在服务器列表中:

但是当我尝试运行我的项目时,我无法选择Tomcat!服务器的下拉列表为空.我尝试使用NetBeans 6.8和6.9 Beta.任何的想法?

结束:我使用了错误的原型,因此NetBeans认定Tomcat无法执行它.

java ide deployment tomcat netbeans

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

从Spring控制器或服务返回错误和消息

我正在使用Spring MVC将一些servlet迁移到Spring框架.目前在每个servlet中我们对用户进行身份验证,如果身份验证失败,我们执行以下操作:

if (authfailed)
{
  response.sendError(HttpServletResponse.SC_UNAUTHORIZED,
                     "You are not authorized.");
  return;
}
Run Code Online (Sandbox Code Playgroud)

在前端是基于YUI的应用程序,当返回错误状态时,"失败"回调会显示一个对话框,其中显示上面给出的错误消息.

我知道在我的控制器中我可以获得响应对象和调用sendError,但这是处理这个问题的最佳方法吗? sendError还抛出一个IOException,所以我必须抓住它 - 在每个控制器的每个方法中插入一些恼人的代码.

我有同样的问题处理异常 - servlet有try-catch块调用sendErrorcatch方法.我知道我可以标记我的异常处理程序

@ExceptionHandler
@ResponseStatus(value = HttpStatus.NOT_FOUND)
Run Code Online (Sandbox Code Playgroud)

但是异常处理类不需要在每个控制器类中吗?

最后,如果在从控制器调用的服务中发生异常,异常是否会冒泡到控制器,或者我应该处理服务中的异常(从而将这些异常处理问题推送到服务层)?

这似乎比它应该更难,但正如Spring中的许多事情一样,我可能不明白发生了什么.我想要做的就是在响应中发送错误状态和消息!

谢谢,

保罗

exception-handling spring-mvc

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

我应该关闭JNDI获取的数据源吗?

更新:显然Tomcat,从7.0.11开始,为您关闭DataSource,因此它在webapp的contextDestroyed中不可用.请参阅:https://issues.apache.org/bugzilla/show_bug.cgi?id = 25060

嗨,

我正在使用Spring 3.0和Java 1.6.

如果我以这种方式获得数据源:

<bean id="dataSource" class="my.data.Source" destroy-method="close">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="url" value="jdbc:oracle:thin:@localhost:1521:home"/>
    <property name="username" value="user"/>
    <property name="password" value="pw"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

然后在bean被销毁时关闭数据源.

如果我得到这样的数据源:

<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/db" />
Run Code Online (Sandbox Code Playgroud)

那么我是否必须在contextDestroyed监听器中显式关闭数据源?

谢谢,

保罗

spring jndi datasource spring-jdbc tomcat7

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

在Java中,如何解析xml架构(xsd)以了解在给定元素处的有效内容?

我希望能够读取XML模式(即xsd),并从中了解当我浏览它时有效的属性,子元素,值.

例如,假设我有一个xsd,这个xml将验证:

<root>
  <element-a type="something">
    <element-b>blah</element-b>
    <element-c>blahblah</element-c>
  </element-a>
</root>
Run Code Online (Sandbox Code Playgroud)

我已经修改了几个库,我可以自信地将其<root>作为根元素.除此之外,我迷失了.

给定一个元素,我需要知道的要求或允许孩子叫什么元素,属性方面,选择等使用上面的例子我想知道,element-a有一个属性type,可能有孩子element-belement-c......或必须有儿童element-belement-c......或者必须有一个...你得到我希望的图片.

我看过很多库,比如XSOM,Eclipse XSD,Apache XmlSchema,发现它们都是很好的示例代码.我对互联网的搜索也没有成功.

有没有人知道一个很好的例子,甚至是一本书,它演示了如何通过XML模式并找出在经过验证的XML文档中给定点的有效选项?

澄清

我不打算验证文档,而是希望了解给定点的选项以帮助创建或编辑文档.如果我在一份文件中知道"我在这里",我想确定那时我能做些什么."插入元素A,B或C中的一个"或"附加属性'描述'".

java xsd

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

Spring 3.x - 如何从返回数据的映射重定向?

我的控制器中有一个方法,如下所示:

@RequestMapping(value="getData", method=RequestMethod.GET)
@ResponseBody
public List<MyDataObj> getData()
{
  return myService.getData();
}
Run Code Online (Sandbox Code Playgroud)

数据以JSON或xsl的形式返回,具体取决于请求.

如果发出请求的人无权访问数据,我需要将用户重定向到"未授权"页面,如下所示:

@RequestMapping(value="getData", method=RequestMethod.GET)
@ResponseBody
public List<MyDataObj> getData()
{
  if (!isAuthorized())
  {
    // redirect to notAuthorized.jsp
  }
  return myService.getData();
}
Run Code Online (Sandbox Code Playgroud)

我使用Spring看到的所有示例都要求方法返回a String或a ModelAndView.我考虑过使用HttpServletResponse.sendRedirect()但是我的所有JSP都在WEB-INF下,无法直接访问.

如何拒绝优雅地访问数据请求URL?

java redirect spring spring-mvc

8
推荐指数
2
解决办法
4108
查看次数

使用Ant,如何在浏览器中打开文件?

我有一个创建HTML报告的Ant任务.是否可以从Ant任务在浏览器中自动加载该报告?如果是这样,是否可以以与用户无关的方式执行此操作,还是需要使用自定义用户属性?

谢谢,

保罗

ant

7
推荐指数
4
解决办法
8801
查看次数

在Spring 3中组织类进行组件扫描的智能方法是什么?

我已经开始使用Spring 3开发一个新项目了,我正在使用注释.我喜欢我可以连接我的类以注入依赖项,但我知道context:component-scan从基础包开始是一个不好的做法.

我正在使用DispatcherServlet具有自己的xml配置文件的.在那也是一个context:component-scan.当我第一次开始学习Spring时,我的组件扫描中有重叠,并且多次创建了bean.我想避免这种情况.

组织我的包或组件扫描以覆盖所有bean而不重复的好方法是什么?

目前我有这样的包:

my.package.controller
my.package.dao
my.package.entity
my.package.service
my.package.util
Run Code Online (Sandbox Code Playgroud)

如果我在所有这些包中都有bean,那么似乎最简单的方法是放入<context:component-scan base-package="my.package"></context:component-scan>applicationContext.xml并完成它.

扫描my.package.controller调度程序的xml和applicationContext.xml中的其余部分(不包括my.package.controller)会更好吗?

或者我应该将所有注释的课程安排在一个区域而其他所有课程安排在另一个区域?就像是:

my.package.spring.controller
my.package.spring.dao
my.package.spring.entity
my.package.spring.service
my.package.spring.util
my.package.notannotated
my.package.notannotated2
Run Code Online (Sandbox Code Playgroud)

我正在使用@Autowired向大多数(如果不是全部)课程添加日志记录,所以我不知道我会有任何不会被注释的课程.

我讨厌陷入配置......我宁愿陷入代码,所以如果有人可以提供任何提示,我会很乐意欢迎他们.

谢谢!

java spring annotations

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

Glassfish:EJB容器初始化错误

我写了一个小的webservice,当我尝试将它部署到glassfish时,我收到此错误:部署期间发生错误:加载应用程序时出现异常:EJB容器初始化错误.有关更多详细信息,请参阅server.log.

@WebService(serviceName = "Mathematics")
public class Mathematics
{
    @WebMethod(operationName = "add")
    public double add(@WebParam(name = "a") double a,
            @WebParam(name = "b") double b)
    {
        return NovusMath.add(a, b);
    }
}
Run Code Online (Sandbox Code Playgroud)

server.log的相关部分:

[#|2012-02-04T21:25:45.437+0100|WARNING|glassfish3.1.1|
javax.enterprise.system.tools.admin.org.glassfish.deployment.admin|_ThreadID=39;
_ThreadName=Thread-2;|Illegal character in path at index 16:
file:/C:/Program Files/glassfish-3.1.1/glassfish/domains/domain1/applications/
Mathematics-web-1.0-SNAPSHOT/WEB-INF/lib/Mathematics-lib-1.0-SNAPSHOT.jar

java.net.URISyntaxException: Illegal character in path at index 16:
file:/C:/Program Files/glassfish-3.1.1/glassfish/domains/domain1/applications/
Mathematics-web-1.0-SNAPSHOT/WEB-INF/lib/Mathematics-lib-1.0-SNAPSHOT.jar
        at java.net.URI$Parser.fail(URI.java:2827)
        at java.net.URI$Parser.checkChars(URI.java:3000)
Run Code Online (Sandbox Code Playgroud)

...

[#|2012-02-04T21:25:45.906+0100|SEVERE|glassfish3.1.1|
javax.enterprise.system.tools.admin.org.glassfish.deployment.admin|
_ThreadID=39;_ThreadName=Thread-2;|
Exception while loading the app : EJB Container initialization error
javax.xml.ws.WebServiceException: WS00056 : Deployment cannot …
Run Code Online (Sandbox Code Playgroud)

java web-services ejb glassfish

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

当我使用Tomcat 7 JDBC连接池取消部署webapp时,为什么连接仍然存在?

我有一个部署到Tomcat 7.0.22的最小Spring Web应用程序 - 它包含几个页面,一个控制器,一个服务和一个DAO,它有一个运行SELECT查询的方法.

webapp配置为使用新的Tomcat JDBC连接池 - 这是webapp的context.xml中的资源配置:

<Resource name="jdbc/myDB"
          auth="Container"
          type="javax.sql.DataSource"
          driverClassName="oracle.jdbc.OracleDriver"
          url="jdbc:oracle:thin:@blah blah"
          factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
          maxActive="15"
          initialSize="5"
          maxWait="40000"
          validationQuery="select 1 from dual"
          removeAbandoned="true"
          removeAbandonedTimeout="300"
          logAbandoned="false"
          username="user"
          password="pass"
          testOnBorrow="true"
          validationInterval="30000"
          timeBetweenEvictionRunsMillis="60000"
          minEvictableIdleTimeMillis="60000" />
Run Code Online (Sandbox Code Playgroud)

当我部署webapp时,我看到出现了5个连接(从SQL Developer查询v $ session).当我取消部署webapp时,连接仍然存在(状态为WAITING).每次重新部署我的webapp时,都会显示5个新连接.

看来游泳池仍在闲逛 - 而Tomcat经理应用程序中的"Find Leaks"按钮告诉我应用程序正在泄漏内存.

取消部署webapp时如何摆脱池?

tomcat connection-pooling jdbc tomcat7

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