好
所以我httpd前一段时间安装了Apache ,并且最近回到它尝试设置SSL并让它为几个不同的tomcat服务器提供服务.
目前我有两个完全独立的Tomcat实例,提供略有不同的版本(一个用于开发,一个用于演示)我的Web应用程序到两个不同的端口:
example.com:8081example.com:8082我已经成功(一月后)用于mod_jk获取httpd服务同样的Tomcat实例http://www.example.com:8090/dev和http://www.example.com:8090/demo (8090只因为我已经有了8080通过码头在这一阶段运行的其他应用程序)在使用下面的代码httpd.conf:
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel debug
<VirtualHost *:8090>
JkMount /devd* tomcatDev
JkMount /demo* tomcatDemo
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我不想做的是启用SSL.
我添加了以下内容httpd.conf:
Listen 443
<VirtualHost _default_:443>
JkMount /dev* tomcatDev
JkMount /demo* tomcatDemo
SSLEngine on
SSLCertificateFile "/opt/httpd/conf/localhost.crt"
SSLCertificateKeyFile "/opt/httpd/conf/keystore.key"
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
但是当我尝试重新启动Apache时apachectl restart(是的,关闭我提到的其他应用程序,所以它没有玩具有https连接)我不断得到错误:
无效命令'SSLEngine',可能由服务器配置中未包含的模块拼写错误或定义.httpd没有运行,试图启动
我看了一下httpd/modulesdir,确实没有mod_ssl,只有mod_jk.so和httpd.exp.
我已经尝试使用yum进行安装mod_ssl,它说它已经安装好了.事实上,我能找到mod_ssl.so的/usr/lib/httpd/modules,但是这不是路径,我安装位置httpd …
我有一个动作状态,它评估一个表达式,然后根据结果转换到各种其他状态.结果状态之一是将子流控制到另一个流的子流状态,例如;
<action-state id="doWork">
<evaluate expression="someAction.doWork(someInput)" />
<transition on="WORKSUCCESS" to="workSuccess" />
<transition on="WORKFAIL" to="fixFail" />
</action-state>
<subflow-state id="fixFail" subflow="someOtherPlace/someOtherWorkToFixFail">
<input name="someNumber" value="1" type="java.lang.Integer" />
<transition on="finish" to="workSuccess" />
</subflow-state>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我可以通过输入标记将输入传递给子流,但我的问题是,当且仅当从转换WORKFAIL调用子流状态时,如何指定和传递我想要的其他输入?假设可以从其他动作状态调用子流状态"fixFail".
我尝试过类似以下的东西但没有效果;
<action-state id="doWork">
<evaluate expression="someAction.doWork(someInput)" />
<transition on="WORKSUCCESS" to="workSuccess" />
<transition on="WORKFAIL" to="fixFail">
<attribute name="newInput" value="3000" type="java.lang.Integer" />
</transition>
</action-state>
<subflow-state id="fixFail" subflow="someOtherPlace/someOtherWorkToFixFail">
<input name="someNumber" value="1" type="java.lang.Integer" />
<input name="someNumber2" value="flowScope.newInput" type="java.lang.Integer" />
<transition on="finish" to="workSuccess" />
</subflow-state>
Run Code Online (Sandbox Code Playgroud) 好的我正在将我的开发环境从笔记本电脑移到我的桌面.
我在两台机器上都有完全相同的项目,但是当我尝试通过桌面上的eclipse运行maven的更新依赖项时,只是抱怨每个依赖项都"缺少人工制品"!
我已经检查了桌面上的本地仓库,果然,没有罐子!?所有的pom都在那里,但没有罐子!
我回到了笔记本电脑,从那台机器上的本地仓库中的罐子里删除了,并再次调用了更新依赖项并且爆炸,罐子下载很好,但桌面似乎无法下载任何罐子?
这两款机器都是一样的网络/路由器,所以它不可能是硬件防火墙/代理,但有一些蚀设置或Windows防火墙设置,我完全忘记了上?
最后,我一直在删除桌面上的repo并在项目中使用mvn -up clean install,我注意到它下载了PLUGIN jar就好了,但后来继续只下载任何和所有依赖的poms!?
我的settings.xml如下(建议的repos的mashup类型);
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0http://maven.apache.org/xsd/settings-1.0.0.xsd">
<pluginGroups></pluginGroups>
<proxies></proxies>
<servers></servers>
<mirrors></mirrors>
<profiles>
<profile>
<id>standard-extra-repos</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>net.java.download</id>
<url>http://download.java.net/maven/2</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>org.apache</id>
<url>http://maven.apache.org/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>org.codehaus.mojo</id>
<url>http://mojo.codehaus.org/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>com.jboss.repository</id>
<url>http://repository.jboss.com/maven2</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>com.springsource.repository.bundles.release
</id>
<name>SpringSource Enterprise Bundle Repository -
SpringSource Bundle Releases</name>
<url>http://repository.springsource.com/maven/bundles/release
</url>
<releases> …Run Code Online (Sandbox Code Playgroud) 所以说我们有3个领域, username, start_date, end_date
用户启动和停止多个记录,例如,bob已经启动并停止了两个记录.
bob 1/2/13 11:00 1/2/13 13:00
jack 1/2/13 15:00 1/2/13 18:00
bob 2/2/13 14:00 1/2/13 19:00
Run Code Online (Sandbox Code Playgroud)
我需要知道每个用户所花费的平均时间(即开始和结束之间的差异),以小时为单位(即按用户分组,而不仅仅是每行).
我不能完全理解如何做差异,平均AND组?有帮助吗?
与我之前的一些问题有关.
我现在有一个我非常喜欢的设置;
Apache httpd侦听端口80接受http和https连接.在几个AJP端口上运行的几个Tomcat实例.
Mod_Jk正在向不同的tomcat实例发送不同的url请求;
www.mydomain.com/demo -> tomcat:8101
www.mydomain.com/test -> tomcat:8102
www.mydomain.com/ -> tomcat:8100
Run Code Online (Sandbox Code Playgroud)
这是通过httpd.conf中的以下配置(或包含的子文件)实现的;
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
NameVirtualHost *:80
<VirtualHost *:80>
JkMount /demo* demoTomcat (workers.properties not shown)
JkMount /test* testTomcat
JkMount /* rootTomcat
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
这一切都很棒.我还使用类似的VirtualHost标记进行SSL设置并运行https连接;
<VirtualHost _default_:443>
JkMount /demo* demoTomcat
JkMount /test* testTomcat
JkMount /* rootTomcat
... SSL Stuff follows ....
Run Code Online (Sandbox Code Playgroud)
我现在遇到的问题是我的SSL证书仅适用于www.mydomain.com而不是mydomain.com.
我被建议使用follow mod_rewrite调用;
Options +FollowSymlinks
LoadModule rewrite_module modules/mod_rewrite.so
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.|$) [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [PT,L]
Run Code Online (Sandbox Code Playgroud)
我已经在httpd.conf文件中的mod_jk规则之前和之后放置了这些.Apache首先抱怨RewriteEngine是一个无效的命令,但是当我第一次记住LoadModule命令时它就消失了:)现在Apache重新启动就好了,服务器启动并接受请求,一切都按照它的使用方式运行......但那样就这样,这些mod_rewrite命令似乎没有效果?
我输入http://mydomain.com浏览器,我按照正常情况获取我的网站.网址似乎没有改变 …
我们目前正在使用安装在远程CentOS盒上的PostgreSQL转向使用安装在远程Windows Server 2008 R2盒子上的MS SQL Server 2008 R2.
我们使用此数据库的Web应用程序已安装并运行在另一个将保留的CentOS盒中.
所有这些框都由第三方托管服务提供商提供,并且都在同一个域网络上.
因此,我们的开发远离服务器/数据库域,因为我们的开发机器是远程的.在过去开放VPN足以让我们在我们的PC上本地运行的Web应用程序的开发实例远程连接到运行在CentOS机器上的PostgreSQL数据库.
但是现在我们在使用Windows Server 2008 R2框时遇到了同样的问题.即使VPN打开,任何连接(甚至ping)远程服务器计算机的尝试都会超时.
我们在新数据库服务器上获取数据库实例连接的代码是正确的,因为当我们将该代码上传到CentOS应用程序框并运行它时,它连接正常,因为代码现在在同一物理域中的框上运行作为Windows Server 2008 R2框.但是,我们需要从远程开发机器建立连接.
这有意义吗?我们需要更改一些Windows防火墙设置以允许远程连接吗?正如我所说,我们甚至无法从远程盒子PING新的Windows Server 2008 R2机器.
所以我使用基于Select2 JQuery的替换选择框.
我已经设置了(在我发现的一个例子的帮助下)通过ajax进行远程数据搜索,效果很好.我的最小输入值为3,因此用户必须在搜索开始前输入至少3个字符(否则"A"将返回90%的可搜索值).
不幸的是,我的可搜索值的很大一部分也以"The"开头.因此,如果用户键入"The",则返回50%的结果,填充基本未经过滤的结果的大量下拉...不理想!
有没有办法让Select2忽略某些设定的短语,即键入"The"不应计入最少3个字符数!
$('#searchInput').select2({
minimumInputLength: 3,
placeholder: 'Please search here ...',
ajax: {
url: "/api/v1/institutes",
dataType: 'json',
quietMillis: 100,
data: function(term, page) {
return {
query: term
};
},
results: function(data, page ) {
return { results: data }
}
},
formatResult: function(institute) {
return "<div class='select2-user-result'>" + institute.name + "</div>";
},
formatSelection: function(institute) {
return institute.name;
},
initSelection : function (element, callback) {
var elementText = $(element).attr('data-init-text');
callback({"term":elementText});
}
});
Run Code Online (Sandbox Code Playgroud) 我已在 Spring Data JpaRespository 上添加了一个具有单个自定义方法的自定义接口,如该问题的答案中所述;
但是现在我收到以下错误;
Caused by: org.springframework.data.mapping.PropertyReferenceException: No property customMethod found for type Account!
at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:75)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:327)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:307)
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:270)
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:241)
at org.springframework.data.repository.query.parser.Part.<init>(Part.java:76)
Run Code Online (Sandbox Code Playgroud)
这似乎是因为 Spring Data 试图生成“customMethod”的查询,认为它是“Account”的属性。
如何停止给定方法的自动查询生成?!
更新我的代码具体如下;
public interface CacheInvalidatingRepo<T> {
public void invalidateCache(T obj);
}
@Component
public class CacheInvalidatingRepoImpl<T> implements CacheInvalidatingRepo<T> {
@Override
public void invalidateCache(T obj) {
// kill the entity manager cache
}
}
public interface VerificationRepo extends JpaRepository<Verification, BigInteger>, JpaSpecificationExecutor<Verification>, CacheInvalidatingRepo<Verification> {
}
Run Code Online (Sandbox Code Playgroud)
结果如下; …
在我的JSP/HTML中我有这个:
<div id="exampleLabel"> </div>
Run Code Online (Sandbox Code Playgroud)
然后在我的javascript部分,我有一个像这样的onclick调用的函数;
function changeLabel(){
exampleLabel.firstChild.nodeValue = 'LABEL HAS CHANGED';
}
Run Code Online (Sandbox Code Playgroud)
这在Chrome中运行良好,在Firefox和IE中没有任何功能,页面上出现错误
exampleLabel.firstChild为null或不是对象.
好的,我可以认为没有第一个孩子所以试图做第一个孩子.YYTHING会是一个NPE,我甚至可以认为其他浏览器不仅仅像Chrome那样自己初始化它.
问题是,我如何自己初始化它,然后我可以继续.nodeValue = "blahblah"下去?
我的页面上有一个dijit.form.Select:
<c:set var="qualId" value="${previous.qualification.id}" />
<select id="qualification" name="qualification" dojoType="dijit.form.Select" onchange="checkForPHD()">
<option value="-1" label=" "> </option>
<c:forEach items="${requestScope.qualifications}" var="qualItem">
<c:choose>
<c:when test="${qualId eq qualItem.id}">
<option value="${qualItem.id}" selected = "selected">${qualItem.name}</option>
</c:when>
<c:otherwise>
<option value="${qualItem.id}">${qualItem.name}</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
Run Code Online (Sandbox Code Playgroud)
然后我试图用一些javascript来设置一些文本到从选择框中选择的选项的TEXT;
function checkForPHD() {
dojo.byId('clazzPHDMessage').innerHTML = dojo.byId('qualification')
.attr('displayedValue');
}
Run Code Online (Sandbox Code Playgroud)
我读过.attr('displayedValue')假设从dijit.form.Select中的选定选项中获取文本,但它似乎没有做太多?.attr('value')得到了那些值,但是我需要TEXT?
我正在尝试在我的 Restful Spring Boot 应用程序中实现 pdf 文件上传。
我有以下方法;
@RequestMapping(value = FILE_URL, method = RequestMethod.POST)
public ResponseDTO submitPDF(
@ModelAttribute("file") FileDTO file) {
MediaType mediaType = MediaType.parseMediaType(file.getFile().getContentType());
System.out.println(file.getFile().getContentType());
System.out.println(mediaType);
System.out.println(mediaType.getType());
if(!"application/pdf".equals(mediaType.getType())) {
throw new IllegalArgumentException("Incorrect file type, PDF required.");
}
... more code here ...
}
Run Code Online (Sandbox Code Playgroud)
FileDTO 只是 MultipartFile 的包装器。
然后我使用 Postman 用form-databody 发布请求'file'=<filename.pdf>
上面 printlns 中的内容类型始终是八位字节流。无论我发送什么类型的文件(png、pdf 等),它始终是八位字节流。如果我application/pdf在 Postman 中专门设置为 Content-Type 标头,则 FileDTO 中的 MultipartFile 最终为空。
问题是,我的 Spring Controller 方法有问题,还是 Postman 没有正确构建请求?
如果 Postman 无法正确获取 Content-Type,我是否可以期望实际的客户端应用程序将内容类型正确设置为 pdf?
apache ×2
java ×2
javascript ×2
spring ×2
dojo ×1
jpa ×1
jquery ×1
maven ×1
mod-jk ×1
mod-rewrite ×1
postman ×1
spring-data ×1
spring-mvc ×1
spring-rest ×1
sql ×1
sql-server ×1
ssl ×1
tomcat ×1