我有一个线程下载数据,我想等到下载完成后再加载数据.有这样做的标准方法吗?
更多信息:
我有一个从URL(序列化POJO)获取数据的Download类.下载是Runnable和Observable.它跟踪下载的字节数和下载大小.我有一个进度条,向用户显示进度.GUI观察下载以更新进度条.
当下载POJO时,我想得到它并转到下一步.每一步都必须等待前一步完成.问题是我想不出一种暂停我的应用程序等待下载线程的方法.下载完成后,我想调用download.getObject(),它将数据作为对象返回.然后我可以投下它并继续进行下一次下载.
我有一个帮助程序类来管理下载的URL并进行所有下载调用.此调用将调用getObject并执行转换.Gui调用helper.getUser().帮助程序启动线程运行,我希望它在完成时"知道",以便它可以返回已转换的对象.
有什么建议/例子吗?我处于这个设计的开始阶段,所以我愿意改变它.
非常感谢你.
更新:
我跟着http://download.oracle.com/javase/6/docs/api/javax/swing/SwingWorker.html#get和使用模式来阻止,直到线程完成.代码非常混乱,我不喜欢这种方法.我将继续尝试找到一种"干净"的方式来处理下载过程的工作流程.
我有一个User在一个函数中被赋予系统特权的实体.我有一个网页,您可以从下拉列表中选择用户并将表单提交给服务器.在服务器端,我想只更新该实体的一个字段.
我的用户实体将具有除了设置的一个字段及其id之外的所有对象的默认值.我是否需要findById更新特定字段然后进行合并,或者有没有办法告诉只更新该字段?
我在我的应用程序的新版本中收到每日OutOfMemory错误.我们为Tomcat分配了1.5 GB的堆.
使用Eclipse Memory分析器(http://www.eclipse.org/mat/),我在最短累积路径下得到了以下内容
org.apache.tomcat.dbcp.pool.impl.CursorableLinkedList$Listable @ 0xa1566cc8
_head org.apache.tomcat.dbcp.pool.impl.CursorableLinkedList @ 0xa1566ca8
_pool org.apache.tomcat.dbcp.dbcp.AbandonedObjectPool @ 0xa1566c38
connectionPool org.apache.tomcat.dbcp.dbcp.BasicDataSource @ 0xa1566980
dataSource org.springframework.orm.jpa.JpaTransactionManager @ 0xa0b01760
<Java Local> java.lang.Thread @ 0xa4005900 ajp-8141-5 Thread
Run Code Online (Sandbox Code Playgroud)
对此的进一步检查显示了许多重复的字符串,这些字符串是Hibernate查询.在我的应用程序主屏幕上,我加载了一个文档列表.查询的副本在堆转储中存在8,241次.
我还注意到org.apache.tomcat.dbcp.dbcp.AbandonedObjectPool中包含1 GB的堆.此文档查询正在加载文档二进制数据.它正在加载的文件大约是1MB.这让我怀疑垃圾收集器没有清理List.我们将从查询中删除不必要的数据,但它仍然让我担心对象仍然存在.
我正在使用JPA,Hibernate和Spring.我正在使用 @Transactional(readOnly=true)获取文档列表的方法.这是我的数据源Spring配置:
<jee:jndi-lookup jndi-name="jdbc/MyDB" id="myDataSource"/>
<bean id="myEmf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="myDataSource"/>
<property name="persistenceUnitName" value="WebPU"/>
<property name="persistenceProvider">
<bean class="org.hibernate.ejb.HibernatePersistence" />
</property>
<property name="jpaVendorAdapter">
<bean
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="database" value="SQL_SERVER" />
<property name="showSql" value="false" />
<property name="generateDdl" value="false" />
</bean>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" …Run Code Online (Sandbox Code Playgroud) 我是vsts和git的新手。因此,我可能缺少一些明显的东西,或者不了解vsts的工作原理。
我们的团队将使用集中式工作流程。VSTS中是否有地方可以放置所有存储库?
如果我有超过50个回购协议,其中一些已在许多项目中使用。例如,一个Web服务项目可为一堆不同的应用程序(网站,内部支持应用程序,移动设备等)提供通用数据。
如果在vsts中创建了一个项目,并且需要更改该Web服务和移动应用程序,那么似乎唯一的选择就是直接将git repo导入到该项目中。项目结束时,回购将流向何处?有没有办法在VSTS中建立一个中心位置来容纳所有回购协议?如果是这样,在我的新项目中使用该仓库(及其他仓库)的工作流程是什么?
更新资料
我知道git是分布式的,但是我们仍然需要一个代表最新仓库的仓库。在git书中,这称为“中央”或“祝福”存储库。
由于VSTS为每个项目创建一个单独的存储库。我想知道如何从VSTS管理此工作流程,或者这将是手动过程。
我认为这是一个常见的设置。具有50-100个代码存储库的企业规模的公司。许多可以触及许多回购协议的项目。我想通过VSTS尽可能多地进行管理。
在阅读了一些MSDN文章后,我的客户端证书和用户名密码适用于我的WCF服务.客户端需要证书以及用户名和密码才能访问我的服务.
最近,证书停止工作,我可以在不提供客户端证书的情况下访问该服务.我正在使用SOAP UI来测试客户端.通常,我必须将客户端证书添加到密钥库,然后指定用于请求的密钥.
最近我设置了一个测试,我没有提供客户端证书.我的conifg中没有任何东西改变了.我有正确的设置吗?
谢谢.
我的绑定配置:
<wsHttpBinding>
<binding name="BasicBinding">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Certificate" />
<message clientCredentialType="UserName" negotiateServiceCredential="false" establishSecurityContext="false" />
</security>
</binding>
</wsHttpBinding>
Run Code Online (Sandbox Code Playgroud)
我的服务:
<service behaviorConfiguration="APIServiceBehaviour" name="Service">
<endpoint address="api" binding="wsHttpBinding" bindingConfiguration="BasicBinding" name="soap-api" bindingNamespace="https://myserver.com" contract="IAIService" />
<host>
<baseAddresses>
<add baseAddress="https://myserver.com" />
</baseAddresses>
</host>
</service>
Run Code Online (Sandbox Code Playgroud)
行为:
<serviceAuthorization principalPermissionMode="Custom">
<authorizationPolicies>
<add policyType="MyAuthorizationPolicy,MyProject" />
</authorizationPolicies>
</serviceAuthorization>
<serviceCredentials>
<serviceCertificate findValue="tempSClient" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" />
<userNameAuthentication userNamePasswordValidationMode="Custom" includeWindowsGroups="false" customUserNamePasswordValidatorType="MyProject.UserAuth,MyProject" />
</serviceCredentials>
</behavior>
Run Code Online (Sandbox Code Playgroud) 我正在设计和测试WCF服务并将它们公开为SOAP Web服务.
我的逻辑上划分了我的服务类.我有一个帐户服务.要访问帐户Web服务,您必须提供用户名和密码以及API令牌.我编写了一个自定义类,将UserNamePasswordValidator扩展到taje的身份验证和IDispatchMessageInspector来检查令牌.
一个要求刚刚出现在我们想要提供一些帐户检查的地方,而无需用户进行身份验证.从逻辑上讲,这些操作应保留在帐户服务中.但是,服务行为被配置为需要用户名,密码并且具有IServiceBehavior,其添加IDispatchMessageInspector以检查令牌的所有按摩.
我一直在通过扩展调度程序审查所有不同的扩展点- Microsoft 和 WCF可扩展性 - Carlos Figueira
我似乎找到了一种只在操作级别应用安全性的方法.或者是一种配置服务的方法,因此某些功能需要安全性/令牌而其他功能则不需要.
我是WCF的新手,所以它可能很简单,但我还没有找到它.如果您知道一篇文章介绍如何以不同方式保护服务的不同部分,或者如果您知道如何,请向我提供一些信息.谢谢.
我有一个Java应用程序从我们的服务器下载信息(实体).我使用下载线程下载数据.
下载过程的流程如下:
下载发生在一个线程中,因此GUI不会"冻结".它还允许我更新进度条.
我需要帮助来管理这个过程.主要问题是当我下载实体数据时,我必须找到一种方法来等待线程完成,然后再尝试获取实体并转到应用程序流程中的下一步.
到目前为止,我已经使用模态对话框来控制流量.我启动线程,弹出一个模态,然后在线程完成时处理模态.模态/线程是Observer/Observable,线程在完成并对话框处理后更改了一个集合.显示模式有效地停止了应用程序的流程,因此它可以等待下载完成.
我还尝试将所有工作流程移至Observers.该过程中的所有相关GUI都是Observers.每个更新方法等待下载完成,然后调用下一个自己下载的GUI.
到目前为止,我发现这两种方法产生的代码难以理解.我想"集中"这个工作流程,以便其他开发人员在试图遵循它时不会拔掉头发.
我的问题是:您是否有任何建议/示例可以以产生易于遵循的代码的方式管理此类工作流程?
我知道'easy'是一个相对的术语,我知道我的两个选项已经有效,但我想从其他程序员那里得到一些想法,而我还有时间改变它.
非常感谢你.
我有一个网站,其默认设置为 IIS 8.5 Windows 2012 R2 上的默认文档。
<system.webServer>
<defaultDocument enabled="true">
<files>
<add value="Default.aspx" />
<add value="Default.htm" />
<add value="Default.asp" />
<add value="index.htm" />
<add value="index.html" />
<add value="iisstart.htm" />
</files>
</defaultDocument>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
当我浏览到没有文件名的 URL (mysite.com/Content/) 时,IIS 将只尝试 default.aspx,而不会尝试列表中的其他文件 (index.html)。IIS 尝试加载 default.aspx 并且我得到 404。奇怪的是该目录中没有 default.aspx 文件并且 index.html 确实存在。如果我直接浏览到 index.html,页面会正确显示。根据关于默认文档的Microsoft 文档,它应该尝试列表中的下一个文件,直到找到存在的文件。
我显式地添加了一个 web.config 文件到子目录
<defaultDocument enabled="true">
<files>
<clear />
<add value="index.html" />
</files>
</defaultDocument>
Run Code Online (Sandbox Code Playgroud)
并且 IIS 仍在尝试使用 default.aspx。有没有人遇到过这个?您对为什么这不能按文档工作有任何建议吗?
我有一个网页,允许用户插入带有标签的表单输入对象.当他们添加一个新对象时,我会自动将它添加到一个2列表中,左列是标签,右边是表单控件.
我想让用户更好地控制页面的布局方式.我想知道是否有任何示例,模式或建议可以帮助我实现这一目标.我发现的唯一示例是在Liferay中,您可以在其中选择不同的布局模板,然后根据布局和顺序在该页面上定位portlet.
更新:
我想坚持他们设计的布局.
我已经将表单本身保留了下来.HTML没有持久化,我在请求表单时动态生成它.我想要一种方法来保持表单的布局.
我不是在寻找太详细的东西.主要是思想和建议.
谢谢
我正在调查使用JPA作为我的数据访问代码.我正在尝试编写业务层和数据访问层,以便它可以在Web应用程序和Java SE应用程序中工作.因此我不能使用容器管理的持久化上下文.我使用JPA的大部分内容都在容器管理环境中显示了示例.
目前,每当我创建服务类的新实例时,我都会获得EntityManagerFactory.对于每个操作(即添加,获取等),我打开一个EntityManager,启动事务执行操作,提交然后关闭EntityManager和EntityManagerFactory.我希望在Java EE环境之外有一个manged持久化上下文的好处.
不使用容器管理上下文时是否有任何最佳实践?是否有任何Java EE独立持久化上下文管理器?有推荐的模式吗?
谢谢,
人
更新
感谢eveyone的信息.一切都非常有用.