我有一些具有一些属性的对象,例如'value'和'label'.
array.join(' ')
当然给了我"[object] [object]",但我需要得到一个由空格分隔的所有对象的'value'属性字符串.
最简单的方法是什么,这是否可以在不编写for循环的情况下实现?
尝试将参数注入CDI bean(ApplicationScoped)的构造函数时,遇到以下问题:
Caused by: org.jboss.weld.exceptions.UnproxyableResolutionException: WELD-001435: Normal scoped bean class xx.Config is not proxyable because it has no no-args constructor - Managed Bean [class xx.Config] with qualifiers [@Default @Named @Any].
at org.jboss.weld.bean.proxy.DefaultProxyInstantiator.validateNoargConstructor(DefaultProxyInstantiator.java:50)
at org.jboss.weld.util.Proxies.getUnproxyableClassException(Proxies.java:217)
at org.jboss.weld.util.Proxies.getUnproxyableTypeException(Proxies.java:178)
Run Code Online (Sandbox Code Playgroud)
但是,我在类上确实有一个可注入的构造函数:
@Inject
public Config(ConfigLocator configLocator) {
defaultConfigPath = configLocator.getPath();
doStuff();
}
Run Code Online (Sandbox Code Playgroud)
使用默认构造函数,变量注入和postconstruct方法,这些都可以正常工作,但是在这种情况下,我更喜欢使用构造函数注入。
有什么想法怎么了?
当使用servlet api(如JSF或JSP页面)运行java Web应用程序时,在该行的某处,会生成"唯一"SessionID以标识用户的会话.
我想知道如何生成这些sessionID.它们是否包含客户的IP?时间戳?随机数?
其次,我想知道这一代发生在哪里?这取决于运行应用程序的服务器吗?
我正在运行带有APC的php5 FPM作为操作码和应用程序缓存.像往常一样,我将php错误记录到文件中.
由于这变得非常大,我尝试配置logrotate.它可以工作,但是在轮换之后,php会继续记录到现有的日志文件,即使重命名它也是如此.这导致scripts.log为0B文件,scripts.log.1继续增长.
我觉得(没试过),在postrotate运行PHP5-FPM重装可以解决这个问题,但是这将每次清楚我的APC缓存.
有谁知道如何正常工作?
对于简单的内部类有一些不同的看法,所以我想知道对什么是好的以及何时使用私有内部类有一个普遍的共识.
这是我发现的一个例子,我认为没有必要创建一个内部类.这有多好/坏?
private static class InternalCounter {
int count;
public InternalTabManager() {
count = 0;
}
public int increment() {
return count++;
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,在这种特殊情况下,一个实例保留在周围的类中以跟踪计数.
在我的JSF2应用程序中,我有一个phaselistener需要在RENDER_RESPONSE之前执行,但是在JSF构建了viewroot之后.
首先,我所做的是在faces-config中注册我的PhaseListener.然后调用侦听器,但是当我执行beforePhase时,getViewRoot().getChildren()
仍然是空的.
其次,我通过在我的xhtml页面上添加以下内容找到了如何做到这一点:
<f:phaseListener type="be.application.PolicyController" />
Run Code Online (Sandbox Code Playgroud)
这很好用,但是将它添加到我的每个页面都会非常繁琐.因此,我正在寻找为我的申请做一次的可能性.
有什么想法可以做到这一点?
我们正在将JSF1.2迁移到JSF2应用程序,我遇到了自定义组件的问题.我们有一个带有组件的独立罐子,在那个罐子里我有这个:
@FacesComponent(value = "Panel2")
public class Panel2 extends UIOutput { ... }
Run Code Online (Sandbox Code Playgroud)
在我的META-INF下的taglib中我有这样的:
<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
id="mw">
<namespace>http://www.ssss.be/jsf/mw</namespace>
<composite-library-name>mw</composite-library-name>
<tag>
<tag-name>panel2</tag-name>
<component>
<component-type>Panel2</component-type>
</component>
</tag>
</facelet-taglib>
Run Code Online (Sandbox Code Playgroud)
在制作了一个这样的jar并在我的其他项目中使用它之后,我使用如下标记:
xmlns:mw="http://www.sofico.be/jsf/mw"
Run Code Online (Sandbox Code Playgroud)
然后:
<mw:panel2 />
Run Code Online (Sandbox Code Playgroud)
但不幸的是结果:
javax.faces.FacesException: Expression Error: Named Object: Panel2 not found. at com.sun.faces.application.ApplicationImpl.createComponentApplyAnnotations(ApplicationImpl.java:1858)
at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:1129)
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
在各种代码质量扫描器中,都有适当的规则来警告从 servlet 内抛出异常。
最特别的是“servlet 方法不应抛出异常”: https: //sonarcloud.io/organizations/default/rules ?open=squid%3AS1989&rule_key=squid%3AS1989
该规则指出,可能会向公众泄露敏感信息,但是当我们在 web.xml 中配置了正确的错误页面时,情况真的是这样吗?
<error-page>
<error-code>500</error-code>
<location>/error.xhtml</location>
</error-page>
Run Code Online (Sandbox Code Playgroud)
根据一些设置和异常类型,该页面决定向公众显示的内容以及记录问题。这为我们提供了一种处理应用程序中各种 servlet 异常的通用方法。
所以,我的问题是:该规则与本案相关吗?如果是这样,我可能会忽略什么?
我需要找出一种方法来确定Oracle是11g还是更新,因为基本上我需要知道我运行的数据库是否支持PIVOT.
得到版本号如果自己不那么困难,所以我得到:
select * from v$version
Run Code Online (Sandbox Code Playgroud)
不幸的是,这并不是一个简单的数字,而是包括叮咬和各种不同版本号的5条记录:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
PL/SQL Release 10.2.0.5.0 - Production
CORE 10.2.0.5.0 Production
TNS for Linux: Version 10.2.0.5.0 - Production
NLSRTL Version 10.2.0.5.0 - Production
Run Code Online (Sandbox Code Playgroud)
那么,如果数据库支持PIVOT语句,有没有办法确定我的Oracle是11g还是更高,甚至更好?
谢谢!
为了验证 JWT,我使用 jose4j 从 url 获取证书,在这种情况下,从谷歌:
HttpsJwks httpsJkws = new HttpsJwks("https://www.googleapis.com/oauth2/v3/certs");
HttpsJwksVerificationKeyResolver httpsJwksKeyResolver = new HttpsJwksVerificationKeyResolver(httpsJkws);
//httpsJkws.setSimpleHttpGet(simpleHttpGet);
JwtConsumer jwtConsumer = new JwtConsumerBuilder()
.setVerificationKeyResolver(httpsJwksKeyResolver)
.build(); // create the JwtConsumer instance
Run Code Online (Sandbox Code Playgroud)
但是,这让我得到一个证书错误:
PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效认证路径
好的,是的,我可以使用一些脚本将它添加到 JVM 的信任库中,但我不想(基本上,它不是自签名证书,并且可以通过常规浏览器正常工作)。大多数时候,我使用 Apache HTTP 客户端 4.x,出于某种原因,在那里,调用确实可以正常工作:
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
HttpResponse httpResponse = httpClient.execute(new HttpGet("https://www.googleapis.com/oauth2/v3/certs"));
String response = (httpResponse.getEntity() != null) ? EntityUtils.toString(httpResponse.getEntity()) : null;
log.debug(response);
} catch (IOException e) {
log.error("I/O Error when retrieving content from '" + jwksEndpointUrl + "': " + e.getMessage()); …
Run Code Online (Sandbox Code Playgroud) 我一直在寻找我的应用程序中的内存泄漏和fhat与jhat,由于某种原因,枚举的实例保存在堆中.
为了模拟它,我已经在tomcat中部署了我的应用程序,稍微使用它,停止它并在tomcat上执行GC(通过jconsole).然后拿了一个heapdump发现了这个:
instance of x.mgbean.quote.Input$Tab@0xe0887c0 (16 bytes)
Class:
class x.mgbean.quote.Input$Tab
Instance data members:
name (L) : VEHICLE (24 bytes)
ordinal (I) : 0
References to this object:
java.util.HashMap$Entry@0xe15f7c0 (24 bytes) : field value
class x.mgbean.quote.Input$Tab (84 bytes) : static field VEHICLE
[Lx.mgbean.quote.Input$Tab;@0xe0887f0 (20 bytes) : Element 0 of [Lx.mgbean.quote.Input$Tab;@0xe0887f0
[Lx.mgbean.quote.Input$Tab;@0xe1541e8 (20 bytes) : Element 0 of [Lx.mgbean.quote.Input$Tab;@0xe1541e8
Run Code Online (Sandbox Code Playgroud)
知道怎么会这样吗?
由于各种原因,我的方法接受泛型Object
参数.该方法的作用取决于实际类型,因此我做了一些实例
现在,在一个特定的情况下,我需要检查类型是否是Iterable.
我发现带有泛型的instanceof不起作用.
x instanceof Iterable<Integer>
Run Code Online (Sandbox Code Playgroud)
那么除了循环每个元素并测试它们的类型之外,有哪些替代方案呢?