小编sch*_*d04的帖子

从classpath中的任何位置加载资源

我有一个简单的java应用程序,它从当前包中加载属性文件.

this.getClass().getResourceAsStream("props.properties");
Run Code Online (Sandbox Code Playgroud)

当我想要的属性文件在当前包中时,这可以正常工作.但是,我想将此应用程序打包为JAR,并使用我使用它的新属性文件定义和覆盖.有没有办法加载类路径上名为"props.properties"的第一个资源?

我希望通过命令行轻松覆盖属性文件:

java.exe -classpath props.properties;myJar.jar com.test.MyApp
Run Code Online (Sandbox Code Playgroud)

我不想解压缩JAR并修改属性文件来改变一些东西.我觉得我错过了一些明显的东西......

java

33
推荐指数
3
解决办法
8万
查看次数

具有固定宽度和滚动条的HTML选择元素

这可能是一个基本的CSS问题,但我不熟悉CSS,似乎只是在圈子里.

这是我的英文版本:我有一个400px的固定宽度选择元素.每个选项的文本不适合400px宽度.我没有得到水平滚动条,它只是切断文本.如何获得滚动条?

这是我在HTML/CSS中的内容:

<div>
  <select style="width=400px">
    <option>this text is too wide to fit and gets cut off.....</option>
    ...
  </select>
</div>
Run Code Online (Sandbox Code Playgroud)

我已经尝试了溢出属性,但我要么错误地使用它,要么它对select元素不起作用.

如何获得水平滚动条?

html css select scrollbar

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

在开发和生产环境中使用OAuth

我已经看到了关于此的其他问题(这里,这里,这里),但我对任何解决方案都不满意,所以我再问一遍.我正在启动一个Web应用程序,它将利用来自多个提供商(Google,Facebook,Twitter,Yahoo)的OAuth进行身份验证.我正在努力寻找适合用于本地开发环境和生产环境的配置.

我发现的主要解决方案是在每个提供商中注册多个应用程序,为每个提供商接收不同的消费者密钥和秘密:

"我的应用程序生产" - 带有http://www.myapp.com/callback的回调URI

"我的应用程序开发" - 带有http://local.myapp.com/callback的回调URI

添加到您的本地主机入口文件指向local.myapp.com127.0.0.1和你的应用程序使用基于环境的正确消费键一些配置,你是好去,对不对?

但我的应用程序是响应式的,我需要测试我的PC上运行的开发环境,从我的iPhone和iPad等多个其他设备运行,这两个设备都无法解析开发回调URI.

假设我的网络上已有DNS服务器,并且能够为其添加条目local.myapp.com而不是我的本地主机文件,现在可以从网络上的任何设备访问我的开发实例.

但我的开发团队都在同一个本地网络上运行.现在local.myapp.com指向每个人的相同IP.让我们回到在每个开发人员的计算机上设置hosts文件,这样他们就可以独立于工作站内工作.现在没有人可以再次从他们的iPhone测试他们的开发实例.对于每个开发人员而言,向提供者注册应用程序似乎不是正确的答案,因此他们可以指定唯一的回调URI.

通常情况下,当我在杂草中找到一个看似简单的问题的复杂解决方案时,通常意味着我做了一些根本错误的事情.我错过了关于OAuth的一些内容,是不是打算像这样使用?我很想完全废弃OAuth,只需要使用OpenID(不需要注册应用程序注册,并且可以在应用程序中指定回调URI),但后来我失去了Facebook和Twitter中的两个重要人物.我真的不需要任何用户的数据,如果它可用,那就太好了.有人能跟我说说OAuth吗?

oauth twitter-oauth facebook-oauth google-oauth

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

JAXB XmlAnyElement设置名称空间属性

我有一个简单的Java类,我用JAXB进行注释:

class Foo {
   @XmlAnyElement(lax=true)
   List<Object> any;
}
Run Code Online (Sandbox Code Playgroud)

其中产生以下架构:

<xs:complexType name="foo">
  <xs:sequence>
    <xs:any processContents="lax" maxOccurs="unbounded"/>
  </xs:sequence>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)

有没有办法为<any>元素设置名称空间属性,以便它生成如下:

<xs:any namespace="##targetNamespace" processContents="lax" maxOccurs="unbounded"/>
Run Code Online (Sandbox Code Playgroud)

java xml xsd jaxb maven-jaxb2-plugin

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

使用参数从Java执行XSLT转换

我正在我的java Web应用程序中执行XSLT转换,没有任何问题,如下所示:

Transformer transformer = TransformerFactory.newInstance().newTransformer(xslSource);
transformer.transform(xmlInput, xmlOutput);
Run Code Online (Sandbox Code Playgroud)

在我的XSLT转换中,我现在正在添加对document()函数的调用以从RESTful Web服务加载响应:

<!-- do stuff -->
<xsl:variable name="url">
   http://server/service?id=<xsl:value-of select="@id"/>
</xsl:variable>
<xsl:call-template name="doMoreStuff">
   <xsl:with-param name="param1" select="document($url)/foo"/>
</xsl:call-template>
Run Code Online (Sandbox Code Playgroud)

好酷,没问题.但现在,我想从java中的utils类中读取基本URL并将其传递给样式表.

//java
String baseUrl = myUtils.getBaseUrl();

<!-- xslt -->
<xsl:variable name="url">
   <xsl:value-of select="$baseUrl"/>
   <xsl:text>/service?id=</xsl:text>
   <xsl:value-of select="@id"/>
</xsl:variable>
Run Code Online (Sandbox Code Playgroud)

有关如何做到这一点的任何建议?我的Java utils类从类路径上的myApp.properties文件加载值,但我不确定我是否可以从XSLT中使用它...

java xslt

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

Tomcat JSP请求占用了所有堆空间

我正在尝试在我们的Tomcat Java Web应用程序中发生内存泄漏,并且认为我在向其中一个JSP发出重复请求时发现了它.然而,在将其拆分为单个空的JSP后,将其放入在jdk1.6上运行的开箱即用的Tomcat 6.0.37实例中,我仍然看到同样的事情.

我正在启动Tomcat,最大堆大小(-Xmx)为256m,并且在我的测试类下面发出大约282,000个请求后,堆空间用完了.

为了比较,我还创建了一个HttpServlet,它与JSP做了同样的事情,并修改了我的测试客户端来调用它,而且它将全天运行而不会耗尽内存.

我已经开始尝试分析堆来弄清楚这里发生了什么,但并没有真正到达任何地方.Soooo,这里发生了什么?

测试JSP

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ page contentType="text/plain"%>
<% System.out.println("Page requested: " + new Date()); %>
This is a test response
Run Code Online (Sandbox Code Playgroud)

Java测试客户端

public static void main(String[] args) throws Exception {
  int i=0;
  while(true) {
    java.net.URL url = new java.net.URL("http://localhost:8080/test.jsp");
    InputStream is = url.openStream();
    while(is.read() != -1) {
      //nothing, just read the stream
    }
    is.close();
    System.out.println("Requests made: " + i++);
  }
}
Run Code Online (Sandbox Code Playgroud)

java heap jsp tomcat

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