问题标签 [objectfactory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++ 阻止用户创建对象实例
我必须为某些类型的对象创建简单的单例对象工厂。问题是我找不到阻止用户通过构造函数创建对象实例的聪明方法。我知道我可以将构造函数移动到私有/受保护部分,但是当构造函数是私有/受保护时,工厂现在将如何创建新对象?让工厂成为每个班级的朋友并不是很聪明,因为我需要在每个标题中预先声明工厂并编写额外的“朋友工厂”;在每个班级。如何正确执行此操作?
mapping - 如何在 ORIKA 中映射类型对象的属性
我有一个 OrderEntryData 类,在里面我有一个属性,它是一个 configurationInfoData 列表(List< ConfigurationInfoData >),在这个 ConfigurationInfoData 里面有一个 Object 类型的属性(Object 值)。该值有时会是日期、字符串或 customClass。
我正在将 Orika 用于 webServices,并且正在尝试解决 OrderEntryDTO 类。
文件:customcommerceWebServices-beans.xml
我正在使用作为 AddressData 实例的对象进行测试。导致地址对象的映射/转换运行良好 AddressData -> AddressDTO
问题是(我认为)Orika 无法识别对象的实例(对象源)或目标类(对象目标)。在响应中,我应该有一个 AddressWsDTO 但我得到:
“de.hybris.platform.cmssmarteditwebservices.dto.AbstractPageWsDTO@54330c75”
我试图实现一个转换器,因为我在想也许 Orika 不知道如何将对象转换为 AddressData(不工作)。
c++ - 将代码编译为库时未在工厂中注册的对象,但可以独立运行
我们正在尝试将我们的代码转换为库,以允许与其他代码进行一些接口。在代码中,我们使用了很多依赖于单例模式的对象工厂,其中对象通过宏声明,实现如下。
我们的问题是,当我们将整个代码编译为库时,对象不再在工厂中注册,并且无法在执行时创建。你有什么建议吗?值得注意的是,应该做一些事情 extern 吗?我必须承认我已经达到了我的极限......
非常感谢 !
马克
javascript - OOP Javascript:内置与用户定义的构造函数
我试图理解 javascript 中的对象创建,并且我知道我们有几种方法可以完成它:Object Literal、Factory 和 Constructor。
我实际上正在使用控制台,但在 jsfiddle 我通过 doc write 输出
问题是 obj 文字和工厂与我们明确使用 obj 构造函数类型的方式相比,我们没有通过构造函数。到目前为止一切顺利,但是当我在控制台中检查 obj 文字和工厂时,它们确实有一个构造函数 [本机代码]
这是我在控制台中得到的:
那么 obj_lit 和 obj_fac 的这 2 个本地构造函数到底是什么?
并且 js 引擎实际上是通过内部的“新”关键字创建 obj_lit 和 obj_fac 吗?
当我们不想采用通过构造函数创建对象的经典方式时,它不会破坏使用文字和工厂的整个概念吗?
python - How to use a object factory with contextlib
I need to write code that deals with different hardware setups. A prori I don't know which hardware is connected to my system. So I use a object factory that reads some identifiers from the hardware and returns a specialized object. I would like to combine this approach with contextlib but did find out that the object still exists outside the with block. In my case this is a problem as I need to close the connection to my device.
A minimal working example for my problem:
This yields
How can I modify this code such that the final animal.speak()
results in a error? I know that I can use del animal
to release animal but there must be a more elegant way.
java - Android:找不到 javax.naming.spi.ObjectFactory 的类文件 - 当我尝试将 Hessian 集成到 Android 中时
当我尝试将 Hessian 集成到 Andorid 时,我收到以下错误消息:
错误:无法访问找不到 javax.naming.spi.ObjectFactory 的 ObjectFactory 类文件
这是代码:
build.gradle 文件:
有没有人有办法解决吗?我犯错了吗?非常感谢。
java - 指定一个 `DataSource` 工厂而不是 Tomcat 的默认值
tl;博士
如何告诉 Tomcat 9 使用特定于 Postgres 的 对象工厂来生成DataSource
对象以响应JNDI查询?
细节
通过定义一个与我的上下文名称相同的 XML 文件,我可以轻松地从Apache TomcatDataSource
9 获取对象。例如,对于一个名为 的网络应用程序,我创建了这个文件:clepsydra
我将该文件放在我的 Tomcat “基本”文件夹中,在conf
文件夹中,在我使用引擎名称Catalina
和主机名创建的文件夹中localhost
。Tomcat 将设置输入资源工厂以返回DataSource
. 我可以通过 JNDI 访问该实例:
我确实意识到,postgres
在那个查找字符串中可能是特定应用程序更具体的东西。但是,让我们postgres
进行相同的演示。
我要org.postgresql.ds.PGSimpleDataSource
,不要org.apache.tomcat.dbcp.dbcp2.BasicDataSource
此设置使用Tomcat 自己的 JDBC DataSource objects 资源工厂。返回DataSource
类的基础类是org.apache.tomcat.dbcp.dbcp2.BasicDataSource
. 不幸的是,我不想要DataSource
那个班级。我想要一个由The PostgreSQL Global Development Group的JDBC 驱动程序DataSource
提供的类:. org.postgresql.ds.PGSimpleDataSource
通过阅读 Tomcat 文档页面、JNDI Resources How-To和JNDI Datasource How-To,我开始意识到 Tomcat 允许我们为这些DataSource
对象使用替代工厂来代替与 Tomcat 捆绑的默认工厂实现。听起来像我需要的。
PGObjectFactory
我发现 Postgres JDBC 驱动程序已经捆绑了这样的实现:
PGObjectFactory
对于简单的 JDBC 连接。PGXADataSourceFactory
对于支持XA的实现DataSource
,对于分布式事务。
顺便说一句,OSGi 应用程序的驱动程序中内置了一个类似的工厂,PGDataSourceFactory
. 我认为这对我来说对 Tomcat 没有用。
因此,PGObjectFactory
该类实现了javax.naming.spi.ObjectFactory
JNDI 所需的接口。
SPI
我猜spi
在那个包名中的意思是对象工厂通过Java Service Provider Interface (SPI)加载。
因此,我认为需要一个 SPI 映射文件,如Oracle 教程和Vaadin 文档中所述。META-INF
在我的 Vaadin 文件夹中添加了一个文件resources
夹,并在其中创建了一个services
进一步嵌套的文件夹。所以在/resources/META-INF/services
我创建了一个javax.naming.spi.ObjectFactory
包含单行文本的文件,我想要的对象工厂的名称:org.postgresql.ds.common.PGObjectFactory
. 我什至检查了 Postgres JDBC 驱动程序,以物理上验证此类的存在和完全限定名称。
问题
➥ 我的问题是:我如何告诉 Tomcat 使用PGObjectFactory
而不是它的默认对象工厂来生成我的DataSource
对象以生成与我的 Postgres 数据库的连接?
factory
<Resource>
元素上的属性
我曾希望它就像在上面看到的我的元素中添加一个factory
属性 ( )一样简单。我从 Tomcat 页面The Context Container中得到了这个想法。该页面非常混乱,因为它专注于全球资源,但我不需要或不想在全球范围内定义它。我只需要这个用于我的一个网络应用程序。factory="org.postgresql.ds.common.PGObjectFactory"
<Resource>
DataSource
DataSource
添加该factory
属性:
…失败,我的DataSource
对象为空。
空值
删除该factory="org.postgresql.ds.common.PGObjectFactory"
属性可解决异常。但是后来我又回到了 TomcatBasicDataSource
而不是 Postgres PGSimpleDataSource
。因此我的问题在这里。
我知道我的Context
XML 已成功加载,因为我可以访问Environment
该条目的值。
第二次实验
几天后,我从顶部尝试了这个。
我创建了一个名为“datasource-object-factory”的新“Plain Java Servlet”风格的 Vaadin 14.0.9 项目。
这是我的整个 Vaadin Web 应用程序代码。下半部分是 JNDI 查找。
为简单起见,我没有指定 Tomcat“基本”文件夹,而是使用默认值。我没有从 IntelliJ 运行,而是将我的 Web 应用程序的 WAR 文件手动移动到该webapps
文件夹中。
我下载了 Tomcat 的新版本,版本 9.0.27。我将 Postgres JDBC jar 拖到/lib
文件夹中。我使用 BatChmod 应用程序来设置 Tomcat 文件夹的权限。
对于conf
文件夹,我创建了Catalina
&localhost
文件夹。在那里,我创建了一个文件,其名称datasource-object-factory.xml
与上面看到的内容相同。
我将我的网络应用程序的datasource-object-factory.war
文件复制到webapps
Tomcat 中。最后,我运行 Tomcat/bin/startup.sh
并观察 WAR 文件分解到一个文件夹中。
使用我元素factory="org.postgresql.ds.common.PGObjectFactory"
上的属性,结果是.Resource
DataSource
null
与我的第一个实验一样,我可以访问 的值<Environment>
,因此我知道我的上下文名称 XML 文件正在被找到并通过 JNDI 成功处理。
以下是 Google Drive 上的日志:
c++ - 注册对对象工厂的调用会导致段错误
我正在尝试用 C++ 构建一个简单的对象工厂。到目前为止,我有这个代码:
工厂:
物体:
segv的回溯:
我遇到的问题是我无法理解为什么会发生 segv,因为s_methods
映射应该在编译时初始化为 0,并且s_registered
应该在程序开始时初始化。