我在我的spring web应用程序中定义了一个bean,我希望只有一个这个bean的实例,这是我的bean定义:
<bean id="accessControl" class="my.spring.app.AccessControl" />
Run Code Online (Sandbox Code Playgroud)
在AccessControl的构造函数中,我为对象分配一个标识符,如下所示:
public class AccessControl {
private long id = 0;
public AccessControl() {
id = System.currentTimeMillis();
}
public long getAccessControlId() {
return id;
}
}
Run Code Online (Sandbox Code Playgroud)
在另一个类中,我尝试抓住AccessControl的实例,如下所示:
ApplicationContext ctx =
new ClassPathXmlApplicationContext("acbean.xml");
AccessControl ac = (AccessControl) ctx.getBean("accessControl");
LOGGER_.info("AccessControl Identifier : " + ac.getAccessControlId());
Run Code Online (Sandbox Code Playgroud)
我期望"id"值是相同的,因为"id"的值在构造函数中设置,并且构造函数不应该一次又一次地被调用,但这正是发生的事情.事实上,我在构造函数中添加了一个日志语句,每次都会创建一个新对象.
我看过:http://www.digizenstudio.com/blog/2006/09/14/a-spring-singleton-is-not-a-singleton/ 但我不认为我正在处理相同的类定义两次使用两个不同的bean标识符,应用程序上下文是相同的.
任何人都可以分享我定义bean的方式有什么问题吗?
我还尝试过singleton ="true"和scope ="singleton",但它们没有任何差异.
谢谢.
我已经编写了一个java webservice,将它部署在我的tomcat上并通过我的webbrowser访问服务WSDL,看起来都没问题.下一步是生成代理类,客户端可以使用代理类与网站进行通信.这就是我接下来做的事情:
让我们假设我的wsdl可以通过以下方式访问:http:// localhost:8080/testSvc/testSvc?wsdl
使用wsimport工具,我使用以下命令生成代理:$> wsimport http:// localhost:8080/testSvc/testSvc?wsdl
问题是localhost:8080在生成的类中被硬编码,如果我在8080以外的端口上部署服务,则客户端无法访问它,因为客户端仍将尝试访问端口8080上的服务.
有没有以端口号没有硬编码的方式开发代理类?这样我们就可以在任何端口上部署服务了?
我已经尝试更新ENDPOINT_ADDRESS_PROPERTY,但这没有用,因为代码在立即代理类的实例时失败了.它永远不会真正达到我可以覆盖它已从代理类准备好的ENDPOINT_ADDRESS的程度.
我正在一个从数据库(sql server)访问数据的网站上工作.它还将添加,更新删除数据库中的记录.好像有一个MDF文件被创建,包含数据库模式和我猜的所有记录?一旦开发完成并且我想将这个数据库移动到一个真实的服务器,那么我需要做的就是将这个MDF文件移动到真实的服务器上,就是这样吗?这么简单吗?还是不是真的?
另外,我希望MDF文件不是只读文件,可以更新/修改或是吗?
我有一段代码,必须指示我的servlet进行一些处理.我的代码不期望从servlet中获得任何回报.它的工作是通知servlet servlet需要做一些处理.需要处理的内容,它是如何处理的是URL的一部分,例如: http:// myserver:port/myservlet/something.do?param1 = param1value¶m2 = param2value ...
但我不希望我的代码等待来自servlet的任何响应.我的代码应继续前进.目前我看到我的代码发出一个请求然后等待,直到servlet发送响应,然后转到发出下一个http post请求.多线程是一种选择,但除此之外还有其他选择吗?
我遇到了一个我无法再生的问题.我读了一个文件,并将该文件的内容写入ServletOutputStream.
byte[] buff = new byte[65536];
int bytesRead = dataStream.read(buff);
response.getOutputStream().write(buff, 0, bytesRead);
Run Code Online (Sandbox Code Playgroud)
我注意到有些文件(小于20KB)在写入输出流时抛出IndexOutofBoundsException,但在其他时候,一切都可以找到.我的意思是,没有报告IndexOutOfBoundsException.
这是我得到的堆栈跟踪:
java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:331)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:392)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:381)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:88)
at com.abc.web.DeliverData.serviceRequest(DeliverData.java:101)
Run Code Online (Sandbox Code Playgroud)
我的代码中的第101行是:response.getOutputStream().write(buff,0,bytesRead);
任何想法为什么即使使用相同的文件进行测试也不会始终报告问题?
java ×5
http ×1
outputstream ×1
servlets ×1
singleton ×1
spring ×1
sql ×1
sql-server ×1
web-services ×1
wsimport ×1