草庐IT

java - Thread.setName(name) 注意事项

我有一个使用套接字的多线程客户端服务器应用程序。当找到新的连接时,进一步的执行将转移到使用新的Executors线程池的新线程。我想在该客户端的所有日志语句中记录客户端ID。问题是我不想仅仅为了传递客户端ID而修改方法签名。我想到的解决方案是:使用ThreadLocal来保存客户端值。在run()中,我可以使用Thread.currentThread().setName(clientId);将客户端ID设置到线程中;第一个应该可以。但我喜欢第二种选择,因为一种。我可以从调试器中找到客户端IDb.记录器库可以配置为显示线程名称。因此不需要对日志语句进行任何更改,它也适用于库内的记录器。除

java - user.name 可以被欺骗吗

要在Java程序中获取当前用户的名称,您可以simplyfetchthevalueoftheuser.namesystemproperty:System.getProperty("user.name");但这有多安全?对于常见的运行时环境,执行程序的用户是否可以轻松地将此属性设置为任意值(例如,使用JVM的命令行参数)?用户能否轻易伪造此用户名?我问是因为我正在编写一个任何人都可以运行的命令行程序,但只有当用户是特殊管理用户时才允许进行一些特权操作。请注意,由于Java11user.name属性仅在程序启动后有效读取,因此恶意程序代码无法欺骗它。 最佳答案

java - CDI部署失败:WELD-001414 Bean name is ambiguous

我有一个应用程序,它有多个模块和各种依赖项。当我在Glassfish4上部署应用程序时,出现错误:org.jboss.weld.exceptions.DeploymentException:WELD-001414Beannameisambiguous.NameJerseyClassAnalyzerresolvestobeans:[ManagedBean[classorg.glassfish.jersey.internal.inject.JerseyClassAnalyzer]withqualifiers[@Default@Named@Any],ManagedBean[classorg.

Java EE 异常 : Name java:comp is not bound in this Context

我在Netbeans7.2.1中安装了JavaEE应用程序。尝试部署它(构建结束正常),我在Tomcat日志中收到错误:Causedby:javax.naming.NameNotFoundException:Namejava:compisnotboundinthisContextatorg.apache.naming.NamingContext.lookup(NamingContext.java:770)atorg.apache.naming.NamingContext.lookup(NamingContext.java:153)atjavax.naming.InitialContex

java - Weblogic:调用没有架构名称的 DB2 存储过程(属性 currentSchema)

我有一个在Weblogic上运行的Java应用程序。应用程序需要访问DB2数据库中的存储过程,因此通过JNDI名称配置和访问JDBC数据源。数据来源:ClassDriver:com.ibm.db2.jcc.DB2DriverProperties:user=MYUSERDatabaseName=MYDB以下示例按预期工作。Contextenv=null;DataSourcepool=null;Hashtableht=newHashtable();ht.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFa

java - 找不到 JSF 2.1.13 自定义组件 : Tag Library supports namespace: <namsepace> but no tag was defined for name: <compositecomponent>

问题我正在使用JSF2.1.13创建一个原型(prototype),以展示JSF相对于我们当前使用JSP和struts1.1构建的webapp的优势>。我遵循使用JSF2.2.6的代码,但是一旦发现OracleWeblogic12c尚不支持JSF2.2,我不得不降级。使用2.1.13运行代码时,我收到以下错误:/pages/sites/tab-details.xhtml@27,90TagLibrarysupportsnamespace:http://java.sun.com/jsf/composite/ccc,butnotagwasdefinedforname:codedType谷歌搜

java 1.5 : Best practice to keep constants for column name of db tables?

技术:-Java1.5或1.6-hibernate3.4为了避免在更改列名或表名时在多个位置更新列名,我想要一个相同的常量文件。我有以下疑问?一种可能的解决方案是维护一个全局文件,该文件存储数据库中所有表的列名的常量。喜欢classDbConstants{publicstaticfinalStringEMPLOYEE__PERFORMANCE_DESC="performance_desc";}在上面的例子中,employees是表名,performance_desc是列名。因此,在命名常量时遵循一种tablename__columnname格式,以避免两个不同表的两个常量在具有列名的情

Java JPA : Performant check if Entity is already in DB

使用JPA检查实体是否已在数据库中的最佳方法/最佳实践是什么?我正在编写一个将主机信息添加到数据库的客户端。例如附加的存储lun、hba等...如果我想为主机添加一个Lun,我必须检查该lun是否已经在数据库中。(Lun可以附加到另一个主机上)。我看到了2种可能性:我选择了Lun,检查它是否已经在数据库中尝试插入Lun并检查异常(唯一约束)有人有这方面的经验吗?BR,雷内 最佳答案 entityManager.find(SomeEntity.class,id)Returns:thefoundentityinstanceornulli

Java基础: a static function without a name,或返回类型

publicclassMain{publicstaticfinalLoggerLOGGER=Logger.getLogger(Main.class.getName());static{try{LOGGER.addHandler(newFileHandler("errors.log",true));}catch(IOExceptionex){LOGGER.log(Level.WARNING,ex.toString(),ex);}}...我想知道这个无名静态函数是关于什么的。我从未在java中看到过这样的东西(我目前正在学习)。它有什么用?它通常在什么时候使用?什么时候在程序中执行?

java - Oracle DB 是否支持每个连接的多个(并行)操作?

我的Java应用程序需要将光标保持到Oracle数据库一段时间。在此期间必须进行其他DB语句。这需要单独的数据库连接还是可以使用相同的(游标的)?谢谢。 最佳答案 唯一的限制是单个语句在给定时间只能有一个ResultSet。请注意,一条语句可以生成多个结果集,但您必须按顺序访问它们(使用getNextResult())为了能够拥有多个打开的结果集/游标,您需要多个java.sql.Statement对象。单个连接只能有一个Activity(即运行)语句。因此,如果您需要多个打开的游标(ResultSet),则需要使用各自的State