小编str*_*rry的帖子

为什么Java中的属性是公开的?

众所周知,Java遵循面向对象的范式,数据封装说,对象的字段(属性)应该为外部世界隐藏,只能通过方法访问,或者方法是外部类的唯一接口世界.那么为什么有可能将Java中的字段声明为public,这会违反数据封装范例呢?

java oop visibility

43
推荐指数
4
解决办法
9565
查看次数

如何测试远程系统是否可访问

我想测试是否可以使用Java访问远程系统,或者换句话说使用Java"发送ping".例如,此功能应封装在具有布尔值的方法中

public boolean isReachable(String ip) {
   // what to do :-)
}
Run Code Online (Sandbox Code Playgroud)

我已经测试了Java Process类,但我不认为这是最好的方法,因为OutputBuffers的输出处理很复杂.

Process proc = Runtime.getRuntime().exec("ping " + ip);
Run Code Online (Sandbox Code Playgroud)

另一种可能性是创建一个套接字连接并处理抛出的异常,但如果远程系统是一个"裸"的unix系统,另一边可能没有Socket :-)另外,我希望能够设置一个超时时,无法访问远程系统.

那怎么能这样呢?谢谢!

java networking

21
推荐指数
3
解决办法
3万
查看次数

Tomcat 6中使用SSL的密钥库格式无效

我正在尝试在我的本地Tomcat 6安装中设置SSL.为此,我按照官方的方法执行以下操作:

$JAVA_HOME/bin/keytool -genkey -v -keyalg RSA -alias
          tomcat -keypass changeit -storepass changeit
$JAVA_HOME/bin/keytool -export -alias tomcat -storepass
          changeit -file /root/server.crt
Run Code Online (Sandbox Code Playgroud)

然后更改$ CATALINA_BASE/conf/server.xml,对此进行评论:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS"
           keystoreFile="/root/.keystore" keystorePass="changeit" />
Run Code Online (Sandbox Code Playgroud)

启动Tomcat后,我得到了以下异常:

INFO: Initializing Coyote HTTP/1.1 on http-8080
30.06.2011 10:15:24 org.apache.tomcat.util.net.jsse.JSSESocketFactory getStore
SCHWERWIEGEND: Failed to load keystore type JKS with path /root/.keystore
due to Invalid keystore format
java.io.IOException: Invalid keystore format
      at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:633)
      at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:38)
      at java.security.KeyStore.load(KeyStore.java:1185)
Run Code Online (Sandbox Code Playgroud)

当我看到密钥库时,keytool -list我得到了

root@host:~# $JAVA_HOME/bin/keytool -list …
Run Code Online (Sandbox Code Playgroud)

ssl tomcat6

9
推荐指数
1
解决办法
3万
查看次数

创建数据模型的最佳实践

对于当前项目,我正在创建一个数据模型.有没有哪些资源可以找到一个好的数据模型的"最佳实践"?良好意味着灵活,高效,具有良好的性能,风格......一些示例问题是"列的命名","应该规范化的数据",或"应该将哪些属性导出到自己的表中".来源应该是一本书:-)

database database-design naming-conventions normalization

7
推荐指数
1
解决办法
7197
查看次数

我在哪里可以找到eclipse图标的源文件?

我想在插图画家中使用eclipse(包,java项目等)中的一些图标.为了获得最佳效果,我希望以矢量格式或至少是可编辑格式的图标.有什么来源我可以从中得到它们吗?我找到了jar org.eclipse.jdt.ui_3.5.2.r352_v20100106-0800.jar,其中包含了所有图标,但不幸的是作为gif文件.谢谢!

eclipse icons

7
推荐指数
1
解决办法
5452
查看次数

如何在多个portlet中共享jar?

我在我的portlet中使用了几个jar,例如c3p0.现在我想避免将jar放在我的每个portlet lib文件夹中.如何在多个portlet中共享一个jar文件?我应该如何将它们集成到Eclipse IDE中?添加一个外部jar或将它们放在一个专用项目中并从那里包含它们?

portlet jar liferay liferay-6

6
推荐指数
1
解决办法
5576
查看次数

使用wsimport时的安全异常

我想从wsdl文件生成存根文件,该文件可以通过具有自签名证书的ssl连接访问。

<exec executable="wsimport">
<arg value="-d" />
<arg value="${absolute.path.to.project}/gen" />
<arg value="-s" />
<arg value="${absolute.path.to.project}/src" />
<arg value="https://host:8443/wsrf/services/WS?wsdl" />
</exec>
Run Code Online (Sandbox Code Playgroud)

当我在ant中执行此操作时,出现以下错误:

generate-from-wsdl:
     [exec] parsing WSDL...
     [exec] [ERROR] sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
     [exec] Failed to read the WSDL document: https://192.168.56.101:8443/wsrf/services/KnowledgebaseWebservice?wsdl, because 1) could not find the document; /2) the document could not be read; 3) the root element of the document is not <wsdl:definitions>.
     [exec] [ERROR] failed.noservice=Could not find wsdl:service in …
Run Code Online (Sandbox Code Playgroud)

java ant ssl exception wsimport

5
推荐指数
1
解决办法
1万
查看次数

将准备好的语句OBJECTS放在Java中的位置?

我想用预备语句.我已经读过,预处理语句的优点是它们不必每次都被解析/编译,因此减少了负载.现在我的问题是,在Java或我的数据库系统中,对已经准备好的语句的"识别"发生了什么?我问,因为我想知道在我的代码中将PreparedStatement对象存储在何处:作为class属性并为每个请求设置参数或者在有请求时创建一个新的预准备语句对象.

    public class Option1 {
       private PreparedStatement myStatement;
       public Option1() {
          // create the myStatement object
          myStatement = conn.prepareStatement("");
       }
       public List<Items> query() {
          // just use the myStatement object
          myStatement.setString(1, "foo");
       }
   }

    public class Option2 {
       public List<Items> query() {
          PreparedStatement myLocalStatement = conn.prepareStatement("");;
          // create and use the statement
          myLocalStatement.setString(1, "foo");
       }
   }
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,选择1还是2,更好的方法是什么?但是,每次执行后我都必须做一个"清理" myStatement.close()吗?

也许我应该以另一种方式问它:如何以最有效的方式重复使用它?

更新:如果有两个答案,一个更喜欢选项1和一个选项2,我会请社区投票选择他们的选择^^

java jdbc prepared-statement

5
推荐指数
1
解决办法
1553
查看次数

在向数据库插入值时删除记录

我的数据库具有车辆的位置日志,这意味着每个坐标都将存储在数据库中.现在对于车辆1,假设表中有30个条目,意味着30个位置.现在当第31个条目到来时,我想要删除FIRST条目,这意味着每辆车的最大位置日志数应为30.

现在插入查询是

mysqli_query($con,
    "INSERT INTO $location_history
    VALUES('$id','$lat','$lng','$pwd','$v1','$v2','$v3','$v4','$status' )")
or die("Count not insert to location history!");
Run Code Online (Sandbox Code Playgroud)

php mysql

5
推荐指数
1
解决办法
162
查看次数

在AngularJS中使用$ interpolate来减少自动生成的观察者

ng-repeat在AngularJS中使用该指令往往会产生许多观察者,因为每行包含多个ng-bind指令以分别显示行的数据.每个站点我有大约2.500名观察者:100行,每行包含七列,每列包含一个ng-bind等等.这总结了这一大量的观察者.

我不能使用一次性绑定,因为数据可能会随着时间的推移而改变(从后端重新加载,而不是由用户修改).此外,分页不是一种解决方案,因为该表以一种禁止每种分页方式的方式进行分组.

因此,我正在玩$interpolateAngularJS 的功能.特别是,我想将单行的html提取到一个新模板,在我的JavaScript代码中插入这个行模板,并将连接的行添加到我的$scope.

现在我有两个问题:

  1. 这一般是一种糟糕的方法吗?我仍然从逻辑中分离标记(表格行在专用的HTML文件中描述),但也许我现在忽略了其他缺点.

  2. 如何将行模板加载到变量中,以便将其传递给AngularJS函数?

javascript angularjs

5
推荐指数
1
解决办法
478
查看次数

JAX-WS和版本冲突

作为测试项目,我使用wsdl和jax-ws创建了一个非常简单的WebService.如果客户端在GlassFish中部署为Web应用程序但是如果我直接在Eclipse中启动相同的(WebService-)代码,则会运行得很好,我收到以下错误:

WARNUNG: Input Action on WSDL operation AddNumbers and @Action on its associated Web Method addNumbers did not match and will cause problems in dispatching the requests
Exception in thread "main" java.lang.NoClassDefFoundError: org/glassfish/ha/store/api/BackingStoreException
    at com.sun.xml.ws.rx.mc.runtime.McConfigurationFactory.createInstance(McConfigurationFactory.java:66)
    at com.sun.xml.ws.rx.mc.runtime.McTubeFactory.createTube(McTubeFactory.java:68)
    at com.sun.xml.ws.assembler.TubeCreator.createTube(TubeCreator.java:84)
    at com.sun.xml.ws.assembler.TubelineAssemblerFactoryImpl$MetroTubelineAssembler.createClient(TubelineAssemblerFactoryImpl.java:130)
    at com.sun.xml.ws.client.Stub.createPipeline(Stub.java:228)
    at com.sun.xml.ws.client.Stub.<init>(Stub.java:205)
    at com.sun.xml.ws.client.Stub.<init>(Stub.java:178)
    at com.sun.xml.ws.client.sei.SEIStub.<init>(SEIStub.java:85)
    at com.sun.xml.ws.client.WSServiceDelegate.createEndpointIFBaseProxy(WSServiceDelegate.java:608)
    at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:348)
    at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:330)
    at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:312)
    at javax.xml.ws.Service.getPort(Service.java:134)
    at mnm.namedesdienstes.webservice.service.NameDesDienstesService.getNameDesDienstesPortTypePort(NameDesDienstesService.java:56)
    at webserviceClient.NameDesDienstesClient.myTest(NameDesDienstesClient.java:12)
    at webserviceClient.NameDesDienstesClient.main(NameDesDienstesClient.java:25)
Caused by: java.lang.ClassNotFoundException: org.glassfish.ha.store.api.BackingStoreException
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) …
Run Code Online (Sandbox Code Playgroud)

java eclipse web-services

4
推荐指数
1
解决办法
1万
查看次数