小编Mar*_*sen的帖子

在 quarkus Resteasy 中记录 HTTP 请求和响应

我在使用 Quarkus 中的 REST 客户端(使用 org.eclipse.microprofile.rest.client.RestClientBuilder 构建)调用服务器上的 REST 端点时遇到问题。我非常想通过将 HTTP 请求和响应写入日志来调试服务,这样我就可以看到实际发送到服务器的内容。然而,我一直未能找到针对该特定问题的指南。我设法构建了一个日志过滤器,但只记录了 URL 和实体 toString 值,这与发送的 HTTP 请求和响应完全不同。请帮助我找到记录实际 HTTP 请求和响应的解决方案。

httprequest quarkus quarkus-rest-client

19
推荐指数
2
解决办法
2万
查看次数

如何在另一个JPanel中将JPanel扩展到最大宽度

我觉得我需要稍微改一下这个问题.

更新了以下问题.

我有一个JPanel包含:

myjpanel.setLayout(new BoxLayout(selectors, BoxLayout.PAGE_AXIS));
Run Code Online (Sandbox Code Playgroud)

它包含以下三个面板:

固定大小为'x'和'y'的JPanel

JPanel没有固定的大小

JPanel没有固定的尺寸和小的高度

第二个JPanel包含一个JTable,因此它会扩展以填充整个高度,并按预期方式将底部面板完全按下.

像这样:

t
t
m
m
m
m
m
b
Run Code Online (Sandbox Code Playgroud)

t =顶部面板,m =中间面板,b =底部面板.

这样可行.但是底部面板不像填充父级的整个宽度那样是一个问题.

ttt
mmm
 b 
Run Code Online (Sandbox Code Playgroud)

我想要这个,面板填充整个宽度:

ttt
mmm
bbb
Run Code Online (Sandbox Code Playgroud)

或者,底部面板保持居中的位置:

ttt
mmm
b
Run Code Online (Sandbox Code Playgroud)

老问题如下:

我有一个JPanel包含:

.setLayout(new BoxLayout(selectors, BoxLayout.PAGE_AXIS));
Run Code Online (Sandbox Code Playgroud)

在其中,还有三个JPanels.前两个是固定大小而中间一个不是.

我希望我的底部面板只占用它所需的高度,但使用外部JPanel的所有可用宽度.

我尝试过使用胶水,但无济于事,我宁愿不设置首选和最小/最大尺寸.有没有办法告诉组件只使用布局管理器和框架"填充整个父级宽度".我宁愿不开始做像设置大小和重写方法的黑客.

注意:我不能在内部面板中放置任何胶水或填充物,只能修改外部面板及其布局管理器.

尝试1:

使用myPanel.setLayout(new GridLayout(3, 1));没有产生预期的结果.它做了一个像这样的网格:

XX
 X
Run Code Online (Sandbox Code Playgroud)

但我预计:

X
X
X
Run Code Online (Sandbox Code Playgroud)

尝试2:

使用myPanel.setLayout(new GridLayout(0,1));没有产生预期的结果.它做了一个像这样的网格:

x
x
x
Run Code Online (Sandbox Code Playgroud)

但是所有面板的尺寸都相同,忽略了限制.

java swing jpanel layout-manager boxlayout

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

在执行maven之前设置环境变量(在jenkins构建中)

我正在一台机器上设置一个jenkins slave,它应该构建一个包含一些本机C代码的maven项目.然而,机器本身被证明是一个问题.该机器托管了一个相当老的程序,它使用了很多环境变量,比如JAVA_HOME,maven需要正常运行.为了在从机上运行maven,我需要在执行maven或maven之前设置这些环境变量,而其他依赖项(如ssh)将不会运行.我不能永久地更改变量,所以我需要一种方法来在执行maven构建之前更改环境变量.

我可以通过在执行mvn之前设置环境变量来手动执行构建,并且构建就像魅力一样.但我需要jenkins自动触发构建.

正如我所看到的,我需要:在执行maven之前配置jenkins设置环境变量或者配置maven使用特定值而不是某些环境变量(以这种方式jenkins可以处理执行)

非常感谢您的帮助.

environment-variables slave maven jenkins

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

UML到Java代码生成工具

我最近一直在寻找一种从UML图生成Java代码的工具.我已经看过Papyrus和Omondo的Eclipse了.我遇到的问题是在许多加载了JPA和JAXB类的项目中需要该工具.这使得Omondo和Papyrus都变得简短,因为注释和吸气/定位器非常重要.我正在寻找的是一个能够维护这些项目的图形类图的工具,如UML图,然后根据需要将其转换为Java代码.

我正在寻找的是一个可靠的类图 - > Java代码工具,最好是基于UML的,它支持(尽可能多)以下内容:

  • Java原语(和包装器)
  • 方法和属性的注释
  • 在类图中引用Java核心类
  • 简单的getter/setter方法生成
  • 直接在定义的方法中编码

如果有人知道一个工具(它不一定是UML类图),我非常想知道它.

java uml code-generation class-diagram

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

Apache Tomcat安装程序java.lang.NoClassDefFoundError:org/springframework/asm/ClassVisitor

我刚刚通过ubuntu包管理器安装了tomcat.我打开日志,我看到的第一件事是一个有趣的例外.

java.lang.NoClassDefFoundError:org/springframework/asm/ClassVisitor

我在安装中遗漏了什么吗?

应该说我首先重新安装的原因是我第一次使用Tomcat在webservices上进行,但是没有用.但是现在:为什么我得到这个例外?我把整个日志贴出了善意:

Feb 13, 2012 10:00:17 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Feb 13, 2012 10:00:17 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: org/springframework/asm/ClassVisitor
at org.springframework.context.support.AbstractRefreshableApplicationContext.customizeBeanFactory(AbstractRefreshableApplicationContext.java:218)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:282)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:204)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at …
Run Code Online (Sandbox Code Playgroud)

spring tomcat exception

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

为SSL通信创建证书

我正在开发一个分布式应用程序,它具有许多唯一标识的从属进程,这些进程将通过启用SSL的套接字与主应用程序通信.该应用程序是用java编写的.

我需要一些帮助来理解SSLSockets,或者更确切地说,他们使用的证书.

我正在寻找的是能够告诉我是否正确了解证书链的基本工作方式的人,但我也不会对代码示例说不.

我想要一个设置,其中服务器本身具有CA签名证书,并且每个从属设备将获得由主应用程序创建的自己的证书.

CA->Main server cert->Master SSL cert
CA->Main server cert->Slave SSL cert 1
CA->Main server cert->Slave SSL cert 2
CA->Main server cert->Slave SSL cert 3
Run Code Online (Sandbox Code Playgroud)

第一个问题:这种证书链是解决问题的正确方法吗?我认为这是实现主设备和从设备的最简单方式,所有设备都具有唯一标识,而无需对每个证书进行CA签名.

第二个问题:我如何以编程方式在java中创建SSL证书?我想在这里创建链中的最后一个证书,假设我现在已经拥有"主服务器证书".到目前为止,我已经为证书生成了一个密钥(其中type是RSA):

public KeyPair generateKeypair(String type, int bytes) 
throws NoSuchAlgorithmException{
    KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(type);
    keyPairGenerator.initialize(bytes);
    return keyPairGenerator.generateKeyPair();
}

X509Principal issuer = PrincipalUtil.getSubjectX509Principal(serverCert);
SubjectPublicKeyInfo key 
    = SubjectPublicKeyInfo.getInstance(kpair.getPublic().getEncoded());
X509v3CertificateBuilder certGen 
    = new X509v3CertificateBuilder(
        issuer, 
        BigInteger.valueOf(new SecureRandom().nextInt()), 
        before, 
        after, 
        subject, 
        key
    );
AlgorithmIdentifier sigAlgId 
    = new DefaultSignatureAlgorithmIdentifierFinder().find("SHA1withRSA");
AlgorithmIdentifier digAlgId 
    = new DefaultDigestAlgorithmIdentifierFinder().find(sigAlgId);
Run Code Online (Sandbox Code Playgroud)

我不认为将serverCert设置为发行者就足以签署证书了吗?据我所知,我需要以某种方式在链条中使用下一个证书签署新证书,但我该怎么做?我是否使用serverCert的私钥签署证书,如:

AsymmetricKeyParameter akp 
    = …
Run Code Online (Sandbox Code Playgroud)

java ssl bouncycastle x509certificate

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

静默运行 WLST 解释器

我试图找出一种方法让 weblogic WLST 终端以静默模式运行。当我使用java weblogic.WLST命令启动终端时,它会打印以下行:

Initializing WebLogic Scripting Tool (WLST) ...

Welcome to WebLogic Server Administration Scripting Shell

Type help() for help on available commands
Run Code Online (Sandbox Code Playgroud)

是否有命令行标志或一些未知的巫术使解释器不写这些行?我一厢情愿地尝试 -s 静音,但无济于事。我所有的谷歌搜索都让我找到了一个 -i 标志,它做了一些完全不同的事情。

编辑:

澄清我的目的:

我需要解释器来运行 python 脚本,我确实需要它的输出。然而,欢迎信息是无用的混乱,我想摆脱它。

仅限于:

我唯一的问题是解释器本身写的第一行。一旦进入python脚本,我就可以处理发送到输出的内容。我唯一的问题是上面写的欢迎词。这些是由解释器本身编写的,而不是 Python 代码。

weblogic wlst

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

karaf-maven-plugin:将依赖项定义为一项功能

我正在尝试使karaf-maven-plugin为我的应用程序生成一个功能文件.该应用程序取决于cxf功能,但我似乎无法使插件生成功能xml来反映这一点.

我的功能模块剪切:

    <dependencies>
        <dependency>
            <groupId>com.test.test</groupId>
            <artifactId>test</artifactId>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.karaf.tooling</groupId>
                    <artifactId>karaf-maven-plugin</artifactId>
                    <version>3.0.3</version>
                    <extensions>true</extensions>
                </plugin>
            </plugins>
        </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.karaf.tooling</groupId>
        <artifactId>karaf-maven-plugin</artifactId>
          <configuration>
            <startLevel>80</startLevel>
        <includeTransitiveDependency>true</includeTransitiveDependency>
        <aggregateFeatures>false</aggregateFeatures>
          </configuration>
        </plugin>
        </plugins>
    </build>
Run Code Online (Sandbox Code Playgroud)

我的模块的依赖项:

            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${slf4j.version}</version>
                <scope>provided</scope>
            </dependency>

            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
                <scope>provided</scope>
            </dependency>

            <dependency>
                <groupId>org.osgi</groupId>
                <artifactId>org.osgi.core</artifactId>
                <version>5.0.0</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.osgi</groupId>
                <artifactId>org.osgi.compendium</artifactId>
                <version>5.0.0</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.felix</groupId>
                <artifactId>org.apache.felix.configadmin</artifactId>
                <version>1.8.0</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.2.8</version>
                <scope>provided</scope>
            </dependency>

            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>provided</scope>
            </dependency> …
Run Code Online (Sandbox Code Playgroud)

java osgi provisioning maven apache-karaf

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

一个很好的java(tomcat)SOAP库

ANSVER:阅读和阅读后阅读更多文档.我决定和CXF一起去.Axis和CXF都能够在Tomcat中运行.Axis似乎更快地实现了服务,但也通过这种简单性限制了开发人员.例如,我还没有弄清楚如何将我的登录信息放在AXIS服务的标题中.那么:CXF就是......


我必须开发一个客户端/服务器系统,它使用tomcat(6)作为服务器和用C#创建的客户端.之间的通信将通过SOAP进行.

我的问题是,什么是tomcat服务器上SOAP-> Servlet映射的好库?我正在查看apache轴,但是从他在用户指南http://ws.apache.org/axis/java/user-guide.html中可以读到的关于轴的内容,它在非常高的级别上从soap映射到java类很有控制力.我需要的是一个soap库,我可以在其中定义一个wsdl并将其映射到稍低级别的servlet中的方法.有谁知道任何这样的图书馆?

我习惯使用SOAP webservices,我对此有一个相当好的想法.我没有任何实现服务器的实践经验.我知道SOAP引擎暴露了类中的某些方法,如wsdd中所述.但是当我阅读轴文档时,我一直在运行java到java示例,序列化器和反序列化器.我感觉到轴是一个使用soap的java到java框架的独特感觉.我错了吗?轴做我需要做的事吗?我需要能够控制WSDL,因为我需要支持maxOccurs,sequence,choice等控件.Axis让我有可能控制这些东西,还是我在寻找另一个图书馆?

java tomcat soap

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

Java同步:无阻塞锁定

我有一个同步练习,我需要同步一个read方法,这样只要没有执行写方法,任何数量的线程都可以执行它.这必须从头开始,所以我不能使用java.util.concurrent.locks等.

为此,我需要某种机制来保护,但不阻止读取方法,因此读取线程被写入阻止,但不被其他读取阻塞.我无法使用普通锁定,因为在read方法中调用lock方法会导致其他读取线程等待.

规则应该是这样的:当一个线程在write()内部时,没有其他线程必须输入read()或write()当一个线程在read()内部时,没有其他线程必须输入write(),但它们可能会进入读()

我尝试过构建一些自制的锁来解决这个问题.WriteLock是一个相当标准的reenterant锁,除非它正在执行读取时阻塞(使用readcounter)ReadLock应该只导致线程等待,如果遍历write().否则它应该只允许线程进行其业务并增加WriteLocks计数器.

码:

package sync;

public class SyncTest {
    Long testlong = new Long(0L);
    int reads = 0;
    int writes = 0;
    WriteLock w = new WriteLock();
    ReadLock r = new ReadLock(w);

    public SyncTest() {
        // TODO Auto-generated constructor stub
    }

    public static void main(String args[]){

        final SyncTest s = new SyncTest();

        for(int i = 0 ; i<3 ; i++){ //Start a number of threads to attack SyncTest
            final int ifinal = i;
            new Thread(){
                int inc = …
Run Code Online (Sandbox Code Playgroud)

java concurrency locking

2
推荐指数
1
解决办法
1027
查看次数

Java:替换文件的一部分而不再写入整个文件

是否可以替换部分文件内容,而无需将整个文件重写到磁盘.假设我有一个非常大的几千兆字节的文件,如何替换字节,让我们说位置100到200而不重写整个文件?

作为一个额外的好处,我需要一个不使用任何功能的解决方案,而不是java 1.4.

java io

2
推荐指数
1
解决办法
958
查看次数

在 microprofile Rest 客户端中设置基本身份验证

我有一个服务公开了许多 Jax-RS 接口。我现在想使用这些接口来连接服务。我正在使用 Quarkus,这意味着我正在使用 microprofile Rest 客户端。因为我已经有了 JaxRS 接口,所以使用 @RegisterRestClient 方法并不是真正可行。相反,我使用 RestClientBuilder。

    MyService client = RestClientBuilder.newBuilder()
        .baseUri(URI.create("https://localhost:8080"))
        .build(MyService.class);
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是身份验证。我需要访问的服务被锁定在基本身份验证后面。我找到的所有关于 microprofile REST 客户端的指南都是这个的变体版本的变体,其中解决方案是添加 headerparam。但这是不可能的,因为我已经预先制作了界面,并且复制粘贴整个内容来添加标头参数确实是我宁愿避免的事情。

还应该提到的是,我尝试过使用 @Provider 过滤器来设置标头,但我似乎无法弄清楚如何使用该方法仅针对单个 REST 客户端,而且我有几个。

那么:如何使用 microprofile Rest 客户端设置基本身份验证而不干扰 Jax-Rs 接口本身?

quarkus quarkus-rest-client

2
推荐指数
1
解决办法
8699
查看次数

从 Tomcat 上运行的 CXF Web 服务获取 WSDL

答:我知道就解决方案而言,这不是那种顺利的事情,但我摆弄了 web.xml 和 servlet.xml 文件,出于某种原因,它现在可以工作了,我可以获得服务列表和 wsdl 文件现在就好了。我将我的新文件与下面写的旧文件进行了比较,唯一的区别是 web.xml 的名称是 CXFServlet 而不是 LoginService,并且我现在已经为 cxfservlet.xml 端点提供了一个地址。

我有一个问题,我(最终)在 Tomcat 上部署了 CXF Web 服务。或者,更确切地说,它确实启动了,并且当我部署和重新部署时,它不会在 tomcat 日志中产生任何警告或异常。问题是我无法检索相关服务的 WSDL。我开始认为我不像我想象的那样理解 web.xml 和 cxf.xml 文件。

当我写http://localhost:8080/services/Login?wsdl 时,我希望 WSDL 弹出,但我得到的只是 404。我做错了什么?正如我所说,我没有得到任何例外,那么我的问题是什么?

编辑:由于一些有用的反馈(我记得标记为有用),我意识到我可能在 web.xml 中设置了错误的上下文路径。我通过 tomcat 中的管理器应用程序在名为 LoginService.war 的文件中部署该服务。这引出了一个问题:我什至可以这样做吗?tomcat 会知道在 LoginService 库中查找 CXFServlet 类,还是会在 ROOT 中查找?我是否需要重新配置服务器以允许我从http://localhost:8080/LoginService 运行

网页.xml

<?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<display-name>LoginService</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:metadata/Login/cxfservlet.xml</param-value>
</context-param>
<listener>
<listener-class>
  org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>LoginService</servlet-name>
<servlet-class>
    org.apache.cxf.transport.servlet.CXFServlet
</servlet-class> …
Run Code Online (Sandbox Code Playgroud)

tomcat web-services web.xml cxf

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